[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: