Current section
Files
Jump to
Current section
Files
lib/prompt_runner/rendering/studio/ansi.ex
defmodule PromptRunner.Rendering.Studio.ANSI do
@moduledoc """
ANSI terminal utilities for the studio renderer pipeline.
"""
@red "\e[0;31m"
@green "\e[0;32m"
@blue "\e[0;34m"
@magenta "\e[0;35m"
@cyan "\e[0;36m"
@dim "\e[2m"
@bold "\e[1m"
@reset "\e[0m"
def red(text, enabled? \\ true), do: colorize(text, @red, enabled?)
def green(text, enabled? \\ true), do: colorize(text, @green, enabled?)
def blue(text, enabled? \\ true), do: colorize(text, @blue, enabled?)
def cyan(text, enabled? \\ true), do: colorize(text, @cyan, enabled?)
def magenta(text, enabled? \\ true), do: colorize(text, @magenta, enabled?)
def dim(text, enabled? \\ true), do: colorize(text, @dim, enabled?)
def bold(text, enabled? \\ true), do: colorize(text, @bold, enabled?)
def success, do: "✓"
def failure, do: "✗"
def info, do: "●"
def running, do: "◐"
def clear_line, do: "\r\e[2K"
def cursor_up(n), do: "\e[#{n}A"
def tty? do
match?({:ok, _}, :io.columns(:stdio))
end
defp colorize("", _color, _enabled?), do: ""
defp colorize(text, _color, false), do: text
defp colorize(text, color, true), do: color <> text <> @reset
end