
Untitled
By: a guest on
Jul 4th, 2012 | syntax:
None | size: 0.71 KB | hits: 9 | expires: Never
How can I test strings containing ANSI color codes for equivalence in Perl?
sub simulate($) {
my ($s) = @_;
my $colour = 'black';
my $bold = 0;
my @output;
while (length $s) {
if ($s =~ s/Ax1B[1m//) { $bold = 1; }
elsif ($s =~ s/Ax1B[22m//) { $bold = 0; }
elsif ($s =~ s/Ax1B[30m//) { $colour = 'black'; }
elsif ($s =~ s/Ax1B[31m//) { $colour = 'red'; }
# ...
else { # Plain character to be output
s/A(.)//s;
push @output, [ $1, $colour, $bold ];
}
}
return @output;
}
# Example usage
use Test::More;
is_deeply(
simulate("Hi x1B[31x1B[1mthere!"),
simulate("Hi x1B[1x1B[31mthere!"),
"FTW!");