Current section

Files

Jump to
jacob lib jacob ui output parser.ex
Raw

lib/jacob/ui/output/parser.ex

defmodule Jacob.Ui.Output.Parser do
@moduledoc false
@doc """
Send the given content through the parser for it to get
rightly colored and formated.
"""
def parse(content) do
parse(content, "")
end
# Content is empty
defp parse("", buffer), do: buffer
# Cyan
defp parse("<cy>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.cyan())
end
defp parse("</cy>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.default_color())
end
# Green
defp parse("<g>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.green())
end
defp parse("</g>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.default_color())
end
# Red
defp parse("<r>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.light_red())
end
defp parse("</r>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.default_color())
end
# Yellow
defp parse("<y>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.yellow())
end
defp parse("</y>" <> rest, buffer) do
parse(rest, buffer <> IO.ANSI.default_color())
end
# Random char
defp parse(<<char::binary-size(1), rest::binary>>, buffer) do
parse(rest, buffer <> char)
end
end