Module: Legion::CLI::Theme
- Defined in:
- lib/legion/cli/theme.rb
Constant Summary collapse
- PALETTE =
LegionIO canonical palette: 17 shades, one hue, no exceptions. Sourced from legion_colors.html — the official color system.
{ void: [7, 6, 15], background: [14, 13, 26], deep: [18, 16, 41], core_shell: [24, 22, 58], glow_center: [26, 22, 64], guide_rings: [30, 28, 58], core_mid: [33, 30, 80], skip: [42, 39, 96], inner_tier: [49, 46, 128], mid_arcs: [61, 56, 138], diagonal_nodes: [74, 68, 168], cardinal: [95, 87, 196], mid_nodes: [127, 119, 221], inner_nodes: [139, 131, 230], innermost: [160, 154, 232], near_white: [184, 178, 239], self_point: [197, 194, 245] }.freeze
- RESET =
"\e[0m"- BOLD =
"\e[1m"- DIM =
"\e[2m"- B =
── Banner ──────────────────────────────────────────
"\u2588"- LOGO =
[ "#{B} #{B * 5} #{B * 5} #{B * 2} #{B * 5} #{B} #{B}", "#{B} #{B} #{B} #{B * 2} #{B} #{B} #{B * 2} #{B}", "#{B} #{B * 4} #{B} #{B * 3} #{B * 2} #{B} #{B} #{B} #{B} #{B}", "#{B} #{B} #{B} #{B} #{B * 2} #{B} #{B} #{B} #{B * 2}", "#{B * 5} #{B * 5} #{B * 5} #{B * 2} #{B * 5} #{B} #{B}" ].freeze
- LOGO_GRADIENT =
%i[cardinal mid_nodes self_point mid_nodes cardinal].freeze
- PAD =
' '
Class Method Summary collapse
- .c(name) ⇒ Object
-
.divider(width = 50, color_enabled: true) ⇒ Object
── Decorative helpers ──────────────────────────────.
- .fg(red, green, blue) ⇒ Object
- .orbital_header(text, color_enabled: true) ⇒ Object
- .plain_banner(version: nil) ⇒ Object
- .render_banner(version: nil, color: true) ⇒ Object
Class Method Details
.c(name) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/legion/cli/theme.rb', line 36 def self.c(name) rgb = PALETTE[name] return '' unless rgb fg(*rgb) end |
.divider(width = 50, color_enabled: true) ⇒ Object
── Decorative helpers ──────────────────────────────
103 104 105 106 107 |
# File 'lib/legion/cli/theme.rb', line 103 def self.divider(width = 50, color_enabled: true) return "\u2500" * width unless color_enabled "#{c(:inner_tier)}#{"\u2500" * width}#{RESET}" end |
.fg(red, green, blue) ⇒ Object
32 33 34 |
# File 'lib/legion/cli/theme.rb', line 32 def self.fg(red, green, blue) "\e[38;2;#{red};#{green};#{blue}m" end |
.orbital_header(text, color_enabled: true) ⇒ Object
109 110 111 112 113 |
# File 'lib/legion/cli/theme.rb', line 109 def self.orbital_header(text, color_enabled: true) return "── #{text} ──" unless color_enabled "#{c(:inner_tier)}── #{BOLD}#{c(:near_white)}#{text}#{RESET} #{c(:inner_tier)}──#{RESET}" end |
.plain_banner(version: nil) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/legion/cli/theme.rb', line 84 def self.(version: nil) lines = [] lines << "#{PAD}\u00b7 #{'─' * 43} \u00b7" lines << "#{PAD}╭#{'─' * 45}╮" lines << "#{PAD}│ \u00b7#{' ' * 39}\u00b7 │" LOGO.each { |row| lines << "#{PAD}│ #{row} │" } lines << "#{PAD}│ \u00b7#{' ' * 39}\u00b7 │" lines << "#{PAD}╰#{'─' * 45}╯" lines << "#{PAD}\u00b7 #{'─' * 43} \u00b7" if version lines << '' lines << "#{PAD} Async Job Engine & Extension Ecosystem" lines << "#{PAD} v#{version}" end lines.join("\n") end |
.render_banner(version: nil, color: true) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/legion/cli/theme.rb', line 58 def self.(version: nil, color: true) return (version: version) unless color lines = [] lines << "#{PAD}#{c(:mid_arcs)}\u00b7 #{c(:inner_tier)}#{'─' * 43} #{c(:mid_arcs)}\u00b7#{RESET}" lines << "#{PAD}#{c(:inner_tier)}╭#{'─' * 45}╮#{RESET}" lines << "#{PAD}#{c(:inner_tier)}│#{c(:cardinal)} \u00b7#{' ' * 39}\u00b7 #{c(:inner_tier)}│#{RESET}" LOGO.each_with_index do |row, i| lc = c(LOGO_GRADIENT[i]) lines << "#{PAD}#{c(:inner_tier)}│#{lc} #{row} #{c(:inner_tier)}│#{RESET}" end lines << "#{PAD}#{c(:inner_tier)}│#{c(:cardinal)} \u00b7#{' ' * 39}\u00b7 #{c(:inner_tier)}│#{RESET}" lines << "#{PAD}#{c(:inner_tier)}╰#{'─' * 45}╯#{RESET}" lines << "#{PAD}#{c(:mid_arcs)}\u00b7 #{c(:inner_tier)}#{'─' * 43} #{c(:mid_arcs)}\u00b7#{RESET}" if version lines << '' lines << "#{PAD} #{c(:mid_nodes)}Async Job Engine & Extension Ecosystem#{RESET}" lines << "#{PAD} #{c(:diagonal_nodes)}v#{version}#{RESET}" end lines.join("\n") end |