syntax highlighting with geshi
authorChristian Weiske <cweiske@cweiske.de>
Mon, 26 Mar 2012 20:37:04 +0000 (22:37 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Mon, 26 Mar 2012 20:37:04 +0000 (22:37 +0200)
README.rst
data/templates/display.htm
src/Phorkie/File.php

index ea8a940d1f8388b93e8bd370fab88955599538e7..1cc749b79a33977b7cc1526f01264c3f91cc1ad7 100644 (file)
@@ -35,3 +35,11 @@ Internal directory layout
 Search
 ======
 Use ``ack-grep``
+
+
+Install geshi
+=============
+::
+
+  $ pear channel-discover mediawiki.googlecode.com/svn
+  $ pear install mediawiki/geshi
index ea2e2cd8a69f827ca4bb8b4e755a69d7bce13657..43a76fc9f3ef5f940d2ef8cbe42971ce06e911a9 100644 (file)
@@ -10,7 +10,7 @@
  <p>
   <a href="{{file.getLink('raw')}}">raw</a>
  </p>
- <pre>{{file.getContent}}</pre>
+ {{file.getHighlightedContent|raw}}
 </div>
 {% endfor %}
 {% endblock %}
index 14a7bbf335fbbeb907a99941b1a29eee1ba1df33..6e71de37ca6cfef60fa7d62372ffc1a95921fbec 100644 (file)
@@ -57,6 +57,19 @@ class File
         return file_get_contents($this->path);
     }
 
+    public function getHighlightedContent()
+    {
+        /**
+         * Yes, geshi needs to be in your include path
+         * We use the mediawiki geshi extension package.
+         */
+        require 'MediaWiki/geshi/geshi/geshi.php';
+        $geshi = new \GeSHi($this->getContent(), $this->getType());
+        $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
+        $geshi->set_header_type(GESHI_HEADER_DIV);
+        return $geshi->parse_code();
+    }
+
     public function getMimeType()
     {
         $type = $this->getType();