Property definitions

console $ TermCharFormat :: defaultinit
# ANSI/VT100 code to change character look (SGR).
#
# By default, resets everything to the terminal’s defaults.
#
# Note:
#
# The escape sequence inserted at the end of the string by terminal-related
# methods of `String` resets all character attributes to the terminal’s
# defaults. So, when combining format `a` and `b`, something like
# `("foo".a + " bar").b` will not work as expected, but `"foo".a.b + " bar".b`
# will. You may also use `TermCharFormat` (this class).
#
# Usage example:
#
#     print "{(new TermCharFormat).yellow_fg.bold}a{(new TermCharFormat).yellow_fg}b{new TermCharFormat}"
class TermCharFormat
	super TermEscape

	private var attributes: Array[String] = new Array[String]

	# Copies the attributes from the specified format.
	init from(format: TermCharFormat) do
		attributes.add_all(format.attributes)
	end

	redef fun to_s do return "{csi}{attributes.join(";")}m"

	# Apply the specified SGR and return `self`.
	private fun apply(sgr: String): TermCharFormat do
		attributes.add(sgr)
		return self
	end

	# Apply normal (default) format and return `self`.
	fun default: TermCharFormat do return apply("0")

	# Apply bold weight and return `self`.
	fun bold: TermCharFormat do return apply("1")

	# Apply underlining and return `self`.
	fun underline: TermCharFormat do return apply("4")

	# Apply blinking or bold weight and return `self`.
	fun blink: TermCharFormat do return apply("5")

	# Apply reverse video and return `self`.
	fun inverse: TermCharFormat do return apply("7")

	# Apply normal weight and return `self`.
	fun normal_weight: TermCharFormat do return apply("22")

	# Add the attribute that disable underlining and return `self`.
	fun not_underlined: TermCharFormat do return apply("24")

	# Add the attribute that disable blinking and return `self`.
	fun steady: TermCharFormat do return apply("25")

	# Add the attribute that disable reverse video and return `self`.
	fun positive: TermCharFormat do return apply("27")

	# Apply a black foreground and return `self`.
	fun black_fg: TermCharFormat do return apply("30")

	# Apply a red foreground and return `self`.
	fun red_fg: TermCharFormat do return apply("31")

	# Apply a green foreground and return `self`.
	fun green_fg: TermCharFormat do return apply("32")

	# Apply a yellow foreground and return `self`.
	fun yellow_fg: TermCharFormat do return apply("33")

	# Apply a blue foreground and return `self`.
	fun blue_fg: TermCharFormat do return apply("34")

	# Apply a magenta foreground and return `self`.
	fun magenta_fg: TermCharFormat do return apply("35")

	# Apply a cyan foreground and return `self`.
	fun cyan_fg: TermCharFormat do return apply("36")

	# Apply a white foreground and return `self`.
	fun white_fg: TermCharFormat do return apply("37")

	# Apply the default foreground and return `self`.
	fun default_fg: TermCharFormat do return apply("39")

	# Apply a black background and return `self`.
	fun black_bg: TermCharFormat do return apply("40")

	# Apply a red background and return `self`.
	fun red_bg: TermCharFormat do return apply("41")

	# Apply a green background and return `self`.
	fun green_bg: TermCharFormat do return apply("42")

	# Apply a yellow background and return `self`.
	fun yellow_bg: TermCharFormat do return apply("43")

	# Apply a blue background and return `self`.
	fun blue_bg: TermCharFormat do return apply("44")

	# Apply a magenta background and return `self`.
	fun magenta_bg: TermCharFormat do return apply("45")

	# Apply a cyan background and return `self`.
	fun cyan_bg: TermCharFormat do return apply("46")

	# Apply a white background and return `self`.
	fun white_bg: TermCharFormat do return apply("47")

	# Apply the default background and return `self`.
	fun default_bg: TermCharFormat do return apply("49")
end
lib/console/console.nit:171,1--284,3