SusSourceSusOutputXTerm

class XTerm

Represents an XTerm-compatible output handler with color and style support.

Definitions

COLORS = {...}

Color codes for ANSI terminal colors.

Implementation

COLORS = {
	black: 0,
	red: 1,
	green: 2,
	yellow: 3,
	blue: 4,
	magenta: 5,
	cyan: 6,
	white: 7,
	default: 9,
}

ATTRIBUTES = {...}

Style attribute codes for ANSI terminal attributes.

Implementation

ATTRIBUTES = {
	normal: 0,
	bold: 1,
	bright: 1,
	faint: 2,
	italic: 3,
	underline: 4,
	blink: 5,
	reverse: 7,
	hidden: 8,
}

def colors?

Signature

returns Boolean

Always returns true, as XTerm output supports colors.

Implementation

def colors?
	true
end

def size

Signature

returns Array(Integer)

The terminal size [height, width].

Implementation

def size
	@io.winsize
end

def style(foreground, background = nil, *attributes)

Create an ANSI escape sequence for styling.

Signature

parameter foreground Symbol, nil

The foreground color name.

parameter background Symbol, nil

The background color name.

parameter attributes Array

Additional style attributes.

returns String

An ANSI escape sequence.

Implementation

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

Signature

returns String

The ANSI reset sequence.

Implementation

def reset
	"\e[0m"
end