Bug#605380: Yet another ANSI to HTML converter, this time in Perl
Hi,
JFTR, Thorsten Glaser <tg@debian.org> just sent me his implementation
in Perl (and under the MirOS license[1]):
http://nopaste.snit.ch/26294
Fullquote since I don't know when this paste expires:
---snip---
‣ $ cat y
$fg = 7; $fi = 128; $bg = 0; $bi = 128;
sub a2c {
my $r = shift;
my @a = split /;/,$1;
my $fv = 0;
my $bv = 0;
foreach $c (@a) {
my $v = int($c);
if ($v == 0) { $fg = 7; $bg = 0; $fi = 128; $bi = 128; }
elsif ($v == 1) { $fi = 255; }
elsif ($v == 5) { $bi = 255; }
elsif ($v == 7) { my $t = $fg; $fg = $bg; $bg = $t; }
elsif ($v < 40) { $fg = $v - 30; }
elsif ($v < 50) { $bg = $v - 40; }
else { die "EINVAL"; }
}
if ($fg & 1) { $fv |= $fi << 16; }
if ($fg & 2) { $fv |= $fi << 8; }
if ($fg & 4) { $fv |= $fi; }
if ($bg & 1) { $bv |= $bi << 16; }
if ($bg & 2) { $bv |= $bi << 8; }
if ($bg & 4) { $bv |= $bi; }
if ($fv == 0) { $fv = $fi == 255 ? 0x808080 : 0; }
elsif ($fv == 0x808080) { $fv = 0xCCCCCC; }
if ($bv == 0) { $bv = $bi == 255 ? 0x808080 : 0; }
elsif ($bv == 0x808080) { $bv = 0xCCCCCC; }
return sprintf("</span><span style=\"color:#%06X; background-color:#%06X;\">", $fv, $bv);
}
$i = join "", <>;
$i =~ s/\e\[((?:0|1|5|7|[34][0-7])(?:;(?:0|1|5|[34][0-7]))*)m/a2c($1)/ge;
$i =~ s/^..span.//;
print "<pre style=\"color:#CCCCCC; background-color:#000000;\">".$i."</span></pre>";
‣ $ (echo '<html><body>'; script -c 'ccal 2010' -q /dev/null | perl y) >z.htm
‣ $ konqueror z.htm
WFM…
---snap---
[1] https://www.mirbsd.org/MirOS-Licence.htm
Regards, Axel
--
,''`. | Axel Beckert <abe@debian.org>, http://people.debian.org/~abe/
: :' : | Debian Developer, ftp.ch.debian.org Admin
`. `' | 1024D: F067 EA27 26B9 C3FC 1486 202E C09E 1D89 9593 0EDE
`- | 4096R: 2517 B724 C5F6 CA99 5329 6E61 2FF9 CD59 6126 16B5
Reply to: