Module: TUITD::ANSIUtils
- Included in:
- HtmlRenderer, Screenshot
- Defined in:
- lib/tui_td/ansi_utils.rb
Overview
Shared ANSI color constants and helpers. Used by Screenshot, HtmlRenderer, and other color-aware renderers.
Constant Summary collapse
- ANSI_RGB =
{ "black" => [0x00, 0x00, 0x00], "red" => [0xAA, 0x00, 0x00], "green" => [0x00, 0xAA, 0x00], "yellow" => [0xAA, 0x55, 0x00], "blue" => [0x00, 0x00, 0xAA], "magenta" => [0xAA, 0x00, 0xAA], "cyan" => [0x00, 0xAA, 0xAA], "white" => [0xAA, 0xAA, 0xAA], "bright_black" => [0x55, 0x55, 0x55], "bright_red" => [0xFF, 0x55, 0x55], "bright_green" => [0x55, 0xFF, 0x55], "bright_yellow" => [0xFF, 0xFF, 0x55], "bright_blue" => [0x55, 0x55, 0xFF], "bright_magenta"=> [0xFF, 0x55, 0xFF], "bright_cyan" => [0x55, 0xFF, 0xFF], "bright_white" => [0xFF, 0xFF, 0xFF], }.freeze
- CUBE =
[0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF].freeze
- ANSI_INDEX =
%w[ black red green yellow blue magenta cyan white bright_black bright_red bright_green bright_yellow bright_blue bright_magenta bright_cyan bright_white ].freeze
- DEFAULT_FG =
[0xC0, 0xC0, 0xC0].freeze
- DEFAULT_BG =
[0x00, 0x00, 0x00].freeze
Instance Method Summary collapse
Instance Method Details
#_dig(hash, *keys) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/tui_td/ansi_utils.rb', line 67 def _dig(hash, *keys) keys.each do |k| return nil unless hash hash = hash[k] || hash[k.to_s] end hash end |
#resolve_color(name, fallback) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/tui_td/ansi_utils.rb', line 37 def resolve_color(name, fallback) case name when "default" fallback when /^#([0-9a-fA-F]{6})$/ [$1[0..1].to_i(16), $1[2..3].to_i(16), $1[4..5].to_i(16)] when /\Acolor(\d+)\z/ xterm_256($1.to_i) when /\Abright_(.+)\z/ ANSI_RGB[name] || fallback else ANSI_RGB[name] || fallback end end |
#xterm_256(index) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/tui_td/ansi_utils.rb', line 52 def xterm_256(index) if index < 16 name = ANSI_INDEX[index] ANSI_RGB[name] || DEFAULT_FG elsif index < 232 r = CUBE[((index - 16) / 36) % 6] g = CUBE[((index - 16) / 6) % 6] b = CUBE[(index - 16) % 6] [r, g, b] else v = 8 + (index - 232) * 10 [v, v, v] end end |