diff options
author | Eudyptula <eitan@mosenkis.net> | 2009-06-22 19:08:33 -0400 |
---|---|---|
committer | Eudyptula <eitan@mosenkis.net> | 2009-06-22 19:08:33 -0400 |
commit | 4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd (patch) | |
tree | f51e23897b0b60211c7be24f31c792faa1ec0a98 | |
parent | Fix some silly mistakes, add PATH from the host system to the backend's targe... (diff) | |
download | ingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.tar.gz ingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.tar.bz2 ingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.zip |
Started working on converting terminal escape sequences to HTML equivalents
-rwxr-xr-x | color.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/color.php b/color.php new file mode 100755 index 0000000..0e12806 --- /dev/null +++ b/color.php @@ -0,0 +1,43 @@ +#!/usr/bin/php +<?php +function fg($color) { + return "<span style=\"color: $color\">"; +} +function call_me($match) { + $a=explode(' ', 'bright dim underscore blink reverse hidden'); + $c=explode(' ', 'black red green yellow blue magenta cyan white'); + static $spans=0; + $r=''; + if (count($match) == 1) { + $r.=str_repeat('</span>', $spans); + $spans=0; + } else { + for ($i=1; $i<count($match); $i++) { + $n=(int)$match[$i]; + if ($n == 0) { + $r.=str_repeat('</span>', $spans); + $spans=0; + } elseif ($n <= 8) { + if ($a[$n-1]) { + $r.='<span style="'.$a[$n-1].'">'; + $spans++; + } + } elseif (30 <= $n && $n <= 37) { + $r.='<span style="color: '.$c[$n-30].'">'; + $spans++; + } elseif (40 <= $n && $n <= 47) { + $r.='<span style="background-color: '.$c[$n-40].'">'; + $spans++; + } + } + } + return $r; +} +echo '<pre>'; +while (!feof(STDIN)) { + $line=str_replace("\x1b[K", '', fgets(STDIN)); + do { + $line=preg_replace('#.\ch#', '', $line, -1, $count); // ^H = Backspace + } while ($count); + echo preg_replace_callback('#\e\[(?:(?:([0-9]{1,2});)*([0-9]{1,2}))?m#', 'call_me', $line); +} |