- , . (character, colour, boldness) ( , ), , . .
, :
sub simulate($) {
my ($s) = @_;
my $colour = 'black';
my $bold = 0;
my @output;
while (length $s) {
if ($s =~ s/\A\x1B\[1m//) { $bold = 1; }
elsif ($s =~ s/\A\x1B\[22m//) { $bold = 0; }
elsif ($s =~ s/\A\x1B\[30m//) { $colour = 'black'; }
elsif ($s =~ s/\A\x1B\[31m//) { $colour = 'red'; }
else {
s/\A(.)//s;
push @output, [ $1, $colour, $bold ];
}
}
return @output;
}
use Test::More;
is_deeply(
simulate("Hi \x1B[31\x1B[1mthere!"),
simulate("Hi \x1B[1\x1B[31mthere!"),
"FTW!");