"String::Tagged::Terminal" - format terminal output using "String::Tagged"
Contents
Compatibility Notes
On Windows, the following notes apply:
• On all versions of Windows, the attributes "bold", "fgindex" and "bgindex" are supported. The "bold"
attribute is implemented by using high-intensity colours, so will be indistinguishable from using
high-intensity colour indexes without bold. The full 256-color palette is not supported by Windows,
so it is down-converted to the 16 colours that are.
• Starting with Windows 10, also "under" and "reverse" are supported.
• The attributes "italic", "strike", "altfont", "blink" are not supported on any Windows version.
• On Windows, only a single output console is supported.
Constructors
new_from_formatting
$st = String::Tagged::Terminal->new_from_formatting( $fmt )
Returns a new instance by converting String::Tagged::Formatting standard tags.
Foreground and background colours are converted to their nearest index in the xterm 256 colour palette.
The "monospace" Formatting attribute is rendered by selecting the first alternate font using "altfont".
parse_terminal
$st = String::Tagged::Terminal->parse_terminal( $str );
Sinceversion0.07.
Returns a new instance by parsing a string containing SGR terminal escape sequences mixed with plain
string content.
The parser will only accept 7- or 8-bit encodings of the SGR escape sequence ("\e[ ... m" or "\x9b ...
m"). If any other escape sequences are present, an exception is thrown.
Conversely, unrecognised formatting codes in SGR sequences are simply ignored without warning.
Description
This subclass of String::Tagged provides a method, "build_terminal", for outputting the formatting tags
embedded in the string as terminal escape sequences, to render the the output in the appropriate style.
Methods
The following methods are provided in addition to those provided by String::Tagged.
build_terminal
$str = $st->build_terminal( %opts );
Returns a string containing terminal escape sequences mixed with string content to render the string to a
terminal.
As this string will contain literal terminal control escape sequences, care should be taken when passing
it around, printing it for debugging purposes, or similar.
Takes the following additional named options:
no_color
If true, the "fgindex" and "bgindex" attributes will be ignored. This has the result of performing
some formatting using the other attributes, but not setting colours.
as_formatting
$fmt = $st->as_formatting;
Returns a new "String::Tagged" instance tagged with String::Tagged::Formatting standard tags.
print_to_terminal
$str->print_to_terminal( $fh );
Sinceversion0.03.
Prints the string to the terminal by building a terminal escape string then printing it to the given IO
handle (or "STDOUT" if not supplied).
This method will pass the value of the "NO_COLOR" environment variable to the underlying "build_terminal"
method call, meaning if that has a true value then colouring tags will be ignored, yielding a monochrome
output. This follows the suggestion of <http://no-color.org/>.
say_to_terminal
$str->say_to_terminal( $fh );
Sinceversion0.03.
Prints the string to the terminal as per "print_to_terminal", followed by a linefeed.
Name
"String::Tagged::Terminal" - format terminal output using "String::Tagged"
Synopsis
use String::Tagged::Terminal;
my $st = String::Tagged::Terminal->new
->append( "Hello my name is " )
->append_tagged( $name, bold => 1, fgindex => 4 );
$st->say_to_terminal;
