handle undefined local clone urls
[phorkie.git] / src / phorkie / Renderer / Geshi.php
index 1a79e16d8790411cc232141388eae2a8a9ae3929..9cb15a20d106da7ae27f3302ac1164ae3502fa39 100644 (file)
@@ -6,21 +6,28 @@ class Renderer_Geshi
     /**
      * Converts the code to HTML
      *
-     * @param File $file File to render
+     * @param File        $file File to render
+     * @param Tool_Result $res  Tool result to integrate
      *
      * @return string HTML
      */
-    public function toHtml(File $file)
+    public function toHtml(File $file, Tool_Result $res = null)
     {
-        /**
-         * Yes, geshi needs to be in your include path
-         * We use the mediawiki geshi extension package.
-         */
-        require_once 'MediaWiki/geshi/geshi/geshi.php';
+        if (!class_exists('\\GeSHi', true)) {
+            require_once 'geshi.php';
+        }
         $geshi = new \GeSHi($file->getContent(), $this->getType($file));
         $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
         $geshi->set_header_type(GESHI_HEADER_DIV);
-        return $geshi->parse_code();
+
+        if ($res !== null) {
+            $geshi->highlight_lines_extra(array_keys($res->annotations));
+            $geshi->set_highlight_lines_extra_style('background-color: #F2DEDE');
+        }
+
+        return '<div class="code">'
+            . str_replace('&nbsp;', '&#160;', $geshi->parse_code())
+            . '</div>';
     }
 
     /**