Files
news.gitea.happylizard.me/bin/gems/console-1.29.3/lib/console/terminal/xterm.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

77 lines
1.1 KiB
Ruby

# 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