Sha256: b46f10ab742d0fdd3ed898b707def8e1688e6ed9e0d7cbc6382494861cb39e11
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2019-2024, by Samuel Williams. require "io/console" require_relative "text" module Console # Styled terminal output. module Terminal class XTerm < Text COLORS = { black: 0, red: 1, green: 2, yellow: 3, blue: 4, magenta: 5, cyan: 6, white: 7, default: 9, }.freeze ATTRIBUTES = { normal: 0, bold: 1, bright: 1, faint: 2, italic: 3, underline: 4, blink: 5, reverse: 7, hidden: 8, }.freeze def colors? true end def size @output.winsize rescue Errno::ENOTTY # Fake it... [24, 80] end def width size.last end def style(foreground, background = nil, *attributes) tokens = [] if foreground tokens << 30 + COLORS.fetch(foreground) end if background tokens << 40 + COLORS.fetch(background) end attributes.each do |attribute| tokens << ATTRIBUTES.fetch(attribute){attribute.to_i} end return "\e[#{tokens.join(';')}m" end def reset "\e[0m" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
console-1.29.0 | lib/console/terminal/xterm.rb |
console-1.28.1 | lib/console/terminal/xterm.rb |
console-1.28.0 | lib/console/terminal/xterm.rb |