summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEudyptula <eitan@mosenkis.net>2009-06-22 19:08:33 -0400
committerEudyptula <eitan@mosenkis.net>2009-06-22 19:08:33 -0400
commit4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd (patch)
treef51e23897b0b60211c7be24f31c792faa1ec0a98
parentFix some silly mistakes, add PATH from the host system to the backend's targe... (diff)
downloadingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.tar.gz
ingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.tar.bz2
ingenue-4a4fafed0fcea1f85d7ddf1e71f9da4fa3e4d6dd.zip
Started working on converting terminal escape sequences to HTML equivalents
-rwxr-xr-xcolor.php43
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);
+}