-module(spruce@symbol). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/spruce/symbol.gleam"). -export([resolve/3, status/2]). -export_type([mode/0, status/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " Named terminal glyphs and ASCII fallbacks.\n" "\n" " Use the Unicode constants for rich terminal output, and the `_ascii`\n" " constants when output must stay plain ASCII.\n" ). -type mode() :: unicode | ascii. -type status() :: info | warn | error | success | start | trace | debug | notice | alert | bullet | arrow. -file("src/spruce/symbol.gleam", 82). ?DOC(" Resolve a glyph pair according to the requested mode.\n"). -spec resolve(mode(), binary(), binary()) -> binary(). resolve(Mode, Unicode, Ascii) -> case Mode of unicode -> Unicode; ascii -> Ascii end. -file("src/spruce/symbol.gleam", 94). ?DOC(" Resolve a named status glyph according to the requested mode.\n"). -spec status(mode(), status()) -> binary(). status(Mode, Status) -> case {Status, Mode} of {info, unicode} -> <<"ℹ"/utf8>>; {info, ascii} -> <<"i"/utf8>>; {warn, unicode} -> <<"⚠"/utf8>>; {warn, ascii} -> <<"!"/utf8>>; {error, unicode} -> <<"✖"/utf8>>; {error, ascii} -> <<"x"/utf8>>; {success, unicode} -> <<"✔"/utf8>>; {success, ascii} -> <<"+"/utf8>>; {start, unicode} -> <<"◐"/utf8>>; {start, ascii} -> <<"*"/utf8>>; {trace, unicode} -> <<"→"/utf8>>; {trace, ascii} -> <<">"/utf8>>; {debug, unicode} -> <<"⚙"/utf8>>; {debug, ascii} -> <<"*"/utf8>>; {notice, unicode} -> <<"◉"/utf8>>; {notice, ascii} -> <<"o"/utf8>>; {alert, unicode} -> <<"‼"/utf8>>; {alert, ascii} -> <<"!!"/utf8>>; {bullet, unicode} -> <<"•"/utf8>>; {bullet, ascii} -> <<"-"/utf8>>; {arrow, unicode} -> <<"▸"/utf8>>; {arrow, ascii} -> <<">"/utf8>> end.