[yelp-xsl] Enable syntax highlighting on DocBook, more languages



commit d3054e8730b2a63097b7d07830762cb5902cc9e5
Author: Shaun McCance <shaunm gnome org>
Date:   Sun Jan 2 17:03:05 2011 -0500

    Enable syntax highlighting on DocBook, more languages

 js/syntax.html                       |  194 ++++++++++++++++++++++++++++++++++
 xslt/common/html.xsl                 |    2 +-
 xslt/docbook/html/db2html-block.xsl  |   60 ++++++++++-
 xslt/mallard/html/mal2html-block.xsl |   49 +++++++++-
 4 files changed, 302 insertions(+), 3 deletions(-)
---
diff --git a/js/syntax.html b/js/syntax.html
new file mode 100644
index 0000000..a9d4384
--- /dev/null
+++ b/js/syntax.html
@@ -0,0 +1,194 @@
+<html>
+<head>
+<style type="text/css">
+table { border-collapse: collapse; }
+td {
+  vertical-align: top;
+  border: solid 1px #888a85;
+  padding: 2px 4px 2px 4px;
+}
+p { max-width: 48em; }
+</style>
+<head>
+<body>
+
+<p>Yelp uses <a href="http://www.oriontransfer.co.nz/software/jquery-syntax/index.en";>jQuery.Syntax</a>
+(currently version 2.3) for syntax highlighting. jquery.Syntax has its own naming
+conventions for syntaxes. Mallard uses MIME types. DocBook has a free-form language
+attribute. This page shows the mapping. We try to use MIME types found in the XDG
+mime types package. For DocBook, we try to be compatible with language names used
+by docbook-style-xsl.</p>
+
+<table>
+
+<tr>
+<th>Syntax</th>
+<th>Mallard</th>
+<th>DocBook</th>
+</tr>
+
+<tr>
+<td>apache</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>applescript</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>asm</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>bash</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>bash-script</td>
+<td>application/x-shellscript</td>
+<td>bash</td>
+</tr>
+
+<tr>
+<td>basic</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>clang</td>
+<td>text/x-csrc<br>text/x-chdr<br>text/x-c++hdr<br>text/x-c++src<br>text/x-objcsrc</td>
+<td>c<br>cpp<br>objc</td>
+</tr>
+
+<tr>
+<td>csharp</td>
+<td>text/x-csharp</td>
+<td>csharp</td>
+</tr>
+
+<tr>
+<td>css</td>
+<td>text/css</td>
+<td>css</td>
+</tr>
+
+<tr>
+<td>diff</td>
+<td>text/x-patch</td>
+<td>diff</td>
+</tr>
+
+<tr>
+<td>haskell</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>html</td>
+<td>text/html<br>application/xml<br>*/*+xml</td>
+<td>html<br>xml</td>
+</tr>
+
+<tr>
+<td>java</td>
+<td>text/x-java</td>
+<td>java</td>
+</tr>
+
+<tr>
+<td>javascript</td>
+<td>application/javascript</td>
+<td>javascript</td>
+</tr>
+
+<tr>
+<td>lisp</td>
+<td>text/x-scheme<br>text/x-emacs-lisp</td>
+<td>lisp</td>
+</tr>
+
+<tr>
+<td>lua</td>
+<td>text/x-lua</td>
+<td>lua</td>
+</tr>
+
+<tr>
+<td>ooc</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>pascal</td>
+<td>text/x-pascal</td>
+<td>pascal</td>
+</tr>
+
+<tr>
+<td>perl5</td>
+<td>application/x-perl</td>
+<td>perl</td>
+</tr>
+
+<tr>
+<td>php</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>php-script</td>
+<td>application/x-php</td>
+<td>php</td>
+</tr>
+
+<tr>
+<td>plain</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>python</td>
+<td>text/x-python</td>
+<td>python</td>
+</tr>
+
+<tr>
+<td>ruby</td>
+<td>application/x-ruby</td>
+<td>ruby</td>
+</tr>
+
+<tr>
+<td>smalltalk</td>
+<td></td>
+<td></td>
+</tr>
+
+<tr>
+<td>sql</td>
+<td>text/x-sql</td>
+<td>sql</td>
+</tr>
+
+<tr>
+<td>yaml</td>
+<td>application/x-yaml</td>
+<td>yaml</td>
+</tr>
+
+</table>
+</body>
+</html>
diff --git a/xslt/common/html.xsl b/xslt/common/html.xsl
index 178854b..323d0d1 100644
--- a/xslt/common/html.xsl
+++ b/xslt/common/html.xsl
@@ -166,7 +166,7 @@ This parameter specifies whether syntax highlighting should be enabled for
 code blocks in the output HTML. Syntax highlighting is done at document load
 time by JavaScript.
 -->
-<xsl:param name="html.syntax.highlight" select="false()"/>
+<xsl:param name="html.syntax.highlight" select="true()"/>
 
 
 <!--**==========================================================================
diff --git a/xslt/docbook/html/db2html-block.xsl b/xslt/docbook/html/db2html-block.xsl
index 4253738..915a7bb 100644
--- a/xslt/docbook/html/db2html-block.xsl
+++ b/xslt/docbook/html/db2html-block.xsl
@@ -341,7 +341,65 @@ template.
         <xsl:with-param name="number" select="$number"/>
       </xsl:call-template></pre>
     </xsl:if>
-    <pre class="contents">
+    <pre>
+      <xsl:attribute name="class">
+        <xsl:text>contents </xsl:text>
+        <xsl:if test="$html.syntax.highlight and $node/@language">
+          <xsl:choose>
+            <xsl:when test="@language = 'bash'">
+              <xsl:text>syntax brush-bash-script</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'c' or @language = 'cpp' or @language = 'objc'">
+              <xsl:text>syntax brush-clang</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'csharp'">
+              <xsl:text>syntax brush-csharp</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'css'">
+              <xsl:text>syntax brush-css</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'diff'">
+              <xsl:text>syntax brush-diff</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'html' or @language = 'xml'">
+              <xsl:text>syntax brush-html</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'java'">
+              <xsl:text>syntax brush-java</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'javascript'">
+              <xsl:text>syntax brush-javascript</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'lisp'">
+              <xsl:text>syntax brush-lisp</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'lua'">
+              <xsl:text>syntax brush-lua</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'pascal'">
+              <xsl:text>syntax brush-pascal</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'perl'">
+              <xsl:text>syntax brush-perl5</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'php'">
+              <xsl:text>syntax brush-php-script</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'python'">
+              <xsl:text>syntax brush-python</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'ruby'">
+              <xsl:text>syntax brush-ruby</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'sql'">
+              <xsl:text>syntax brush-sql</xsl:text>
+            </xsl:when>
+            <xsl:when test="@language = 'yaml'">
+              <xsl:text>syntax brush-yaml</xsl:text>
+            </xsl:when>
+          </xsl:choose>
+        </xsl:if>
+      </xsl:attribute>
       <!-- Strip off a leading newline -->
       <xsl:if test="$children[1]/self::text()">
         <xsl:choose>
diff --git a/xslt/mallard/html/mal2html-block.xsl b/xslt/mallard/html/mal2html-block.xsl
index 3961fd1..618404f 100644
--- a/xslt/mallard/html/mal2html-block.xsl
+++ b/xslt/mallard/html/mal2html-block.xsl
@@ -63,13 +63,60 @@ automatically strip leading and trailing newlines using *{utils.strip_newlines}.
         <xsl:text>contents </xsl:text>
         <xsl:if test="$html.syntax.highlight and $node/@mime">
           <xsl:choose>
-            <xsl:when test="@mime = 'text/x-csrc' or @mime = 'text/x-chdr'">
+            <xsl:when test="@mime = 'application/x-shellscript'">
+              <xsl:text>syntax brush-bash-script</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-csrc' or @mime = 'text/x-chdr' or
+                            @mime = 'text/x-c++hdr' or @mime = 'text/x-c++src' or
+                            @mime = 'text/x-objcsrc'">
               <xsl:text>syntax brush-clang</xsl:text>
             </xsl:when>
+            <xsl:when test="@mime = 'text/x-csharp'">
+              <xsl:text>syntax brush-csharp</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/css'">
+              <xsl:text>syntax brush-css</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-patch'">
+              <xsl:text>syntax brush-diff</xsl:text>
+            </xsl:when>
             <xsl:when test="@mime = 'text/html' or @mime = 'application/xml' or
                             substring(@mime, string-length(@mime) - 3) = '+xml'">
               <xsl:text>syntax brush-html</xsl:text>
             </xsl:when>
+            <xsl:when test="@mime = 'text/x-java'">
+              <xsl:text>syntax brush-java</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'application/javascript'">
+              <xsl:text>syntax brush-javascript</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-scheme' or @mime = 'text/x-emacs-lisp'">
+              <xsl:text>syntax brush-lisp</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-lua'">
+              <xsl:text>syntax brush-lua</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-pascal'">
+              <xsl:text>syntax brush-pascal</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'application/x-perl'">
+              <xsl:text>syntax brush-perl5</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'application/x-php'">
+              <xsl:text>syntax brush-php-script</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-python'">
+              <xsl:text>syntax brush-python</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'application/x-ruby'">
+              <xsl:text>syntax brush-ruby</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'text/x-sql'">
+              <xsl:text>syntax brush-sql</xsl:text>
+            </xsl:when>
+            <xsl:when test="@mime = 'application/x-yaml'">
+              <xsl:text>syntax brush-yaml</xsl:text>
+            </xsl:when>
           </xsl:choose>
         </xsl:if>
       </xsl:attribute>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]