diff options
author | Eudyptula <eitan@mosenkis.net> | 2009-06-22 19:28:58 -0400 |
---|---|---|
committer | Eudyptula <eitan@mosenkis.net> | 2009-06-22 19:28:58 -0400 |
commit | be18c4d92f8409deafe2ebde26d5d57ce044586d (patch) | |
tree | fe87385e541af01c309923965a80afde7a7c4e53 | |
parent | Started working on converting terminal escape sequences to HTML equivalents (diff) | |
download | ingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.tar.gz ingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.tar.bz2 ingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.zip |
Integrated basic ANSI handling into logviewer, needs to be merged with logviewer metadata still
-rwxr-xr-x | color.php | 43 | ||||
-rw-r--r-- | frontend/pages/logview.php | 42 | ||||
-rw-r--r-- | shared/config.php | 2 |
3 files changed, 41 insertions, 46 deletions
diff --git a/color.php b/color.php deleted file mode 100755 index 0e12806..0000000 --- a/color.php +++ /dev/null @@ -1,43 +0,0 @@ -#!/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); -} diff --git a/frontend/pages/logview.php b/frontend/pages/logview.php index 176556a..90a1fc9 100644 --- a/frontend/pages/logview.php +++ b/frontend/pages/logview.php @@ -48,8 +48,9 @@ function body_logview() { echo '<div style="font-family: monospace">'; while ($entry=$r->fetch(PDO::FETCH_ASSOC)) { $entry=new sql_buildlog_entry($entry); - $text=str_replace(array("\n", "\t"), array("<br/>\n", str_repeat(' ', 4)), htmlentities($entry->text)); - echo '<a name="entry_'.$task->id.'_'.$entry->order.'"'.($entry->stream=='stderr'?' style="color: red" ':'').' title="'.strtoupper($entry->stream).', entry #'.$entry->order.' @ '.date('D j M Y @ H:i:s', $entry->timestamp).' UTC">'.$text.'</a>'; +// $text=str_replace(array("\n", "\t"), array("<br/>\n", str_repeat(' ', 4)), htmlentities($entry->text)); +// echo '<a name="entry_'.$task->id.'_'.$entry->order.'"'.($entry->stream=='stderr'?' style="color: red" ':'').' title="'.strtoupper($entry->stream).', entry #'.$entry->order.' @ '.date('D j M Y @ H:i:s', $entry->timestamp).' UTC">'.$text.'</a>'; + echo process_ansi($entry->text); } echo '</div>'; echo $pager; @@ -86,4 +87,41 @@ function body_logview() { } } } +function ansi_callback($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; +} +function process_ansi($txt) { + $txt=str_replace("\x1b[K", '', nl2br($txt)); + do { + $txt=preg_replace('#.\ch#', '', $txt, -1, $count); // ^H = Backspace + } while ($count); + return preg_replace_callback('#\e\[(?:(?:([0-9]{1,2});)*([0-9]{1,2}))?m#', 'ansi_callback', $txt); +} ?> diff --git a/shared/config.php b/shared/config.php index 3e7affd..a8719ed 100644 --- a/shared/config.php +++ b/shared/config.php @@ -12,7 +12,7 @@ $conf['timezone']=10800; // Time difference in seconds between UTC and the defau $conf['mod_rewrite']=true; // Use mod_rewrite for pretty URLs $conf['check_email_dns']=true; // Use DNS to check the domain of submitted emails for validity $conf['pkgdir_root']='/home/eitan/soc/tinderbox'; // The directory to recursively search for pkgdirs in -$conf['emerge_default_opts']='-t -v -K --color=n --root-deps=rdeps'; // DON'T CHANGE UNLESS YOU KNOW WHAT YOU'RE DOING +$conf['emerge_default_opts']='-t -v -K --color=y --root-deps=rdeps'; // DON'T CHANGE UNLESS YOU KNOW WHAT YOU'RE DOING $conf['portdir']='/usr/portage'; // The directory conatining the portage tree to use (/usr/portage unless you have a reason to think otherwise) $conf['logview_max']=1000; ?> |