[前][次][番号順一覧][スレッド一覧]

hikidoc:156

From: KADO Masanori <kdmsnr@g...>
Date: Sun, 7 Mar 2010 17:21:04 +0900
Subject: [hikidoc:156] google-code-prettify を使いたい

kdmsnr です。

コードのハイライトに現在は Syntax::Convertors::HTML を使っていますが、
それが無かった場合に google-code-prettify を使いたいです。

* google-code-prettify http://code.google.com/p/google-code-prettify/

使い方としては、JS や CSS ファイルが別途必要になりますが、
HTML側には以下のように pre タグに class を指定します。

 <pre class="prettyprint">
   ...
 </pre>

* 使い方 http://google-code-prettify.googlecode.com/svn/trunk/README.html

特定の class 名をつけるのには少し抵抗がありますが、
自分で syntax 名をつけたときだけなので問題ないかなと思っています。

以下、パッチです。

Index: lib/hikidoc.rb
===================================================================
--- lib/hikidoc.rb	(revision 127)
+++ lib/hikidoc.rb	(working copy)
@@ -678,6 +678,8 @@
           @f.puts convertor.convert(str)
           return
         rescue NameError, RuntimeError
+          @f.puts %Q|<pre class="prettyprint">#{text(str)}</pre>|
+          return
         end
       end
       preformatted(text(str))
Index: test/test_hikidoc.rb
===================================================================
--- test/test_hikidoc.rb	(revision 127)
+++ test/test_hikidoc.rb	(working copy)
@@ -460,16 +460,31 @@
                    "``{{foo}}``")
   end

-  if Object.const_defined?(:Syntax)

-    def test_syntax_ruby
+
+  def test_syntax_ruby
+    if Object.const_defined?(:Syntax)
       assert_convert("<pre><span class=\"keyword\">class </span><span
class=\"class\">A</span>\n  <span class=\"keyword\">def </span><span
class=\"method\">foo</span><span class=\"punct\">(</span><span
class=\"ident\">bar</span><span class=\"punct\">)</span>\n  <span
class=\"keyword\">end</span>\n<span
class=\"keyword\">end</span></pre>\n",
                      "<<< ruby\nclass A\n  def foo(bar)\n  end\nend\n>>>")
       assert_convert("<pre><span class=\"keyword\">class </span><span
class=\"class\">A</span>\n  <span class=\"keyword\">def </span><span
class=\"method\">foo</span><span class=\"punct\">(</span><span
class=\"ident\">bar</span><span class=\"punct\">)</span>\n  <span
class=\"keyword\">end</span>\n<span
class=\"keyword\">end</span></pre>\n",
                      "<<< Ruby\nclass A\n  def foo(bar)\n  end\nend\n>>>")
       assert_convert("<pre><span class=\"punct\">'</span><span
class=\"string\">a&lt;&quot;&gt;b</span><span
class=\"punct\">'</span></pre>\n",
                      "<<< ruby\n'a<\">b'\n>>>")
+
+      # redefine method for below tests
+      class << Syntax::Convertors::HTML
+        def for_syntax(syntax)
+          raise
+        end
+      end
     end
+
+    assert_convert("<pre class=\"prettyprint\">class A\n  def
foo(bar)\n  end\nend</pre>\n",
+                   "<<< ruby\nclass A\n  def foo(bar)\n  end\nend\n>>>")
+    assert_convert("<pre class=\"prettyprint\">class A\n  def
foo(bar)\n  end\nend</pre>\n",
+                   "<<< Ruby\nclass A\n  def foo(bar)\n  end\nend\n>>>")
+    assert_convert("<pre class=\"prettyprint\">'a&lt;\"&gt;b'</pre>\n",
+                   "<<< ruby\n'a<\">b'\n>>>")
   end

   def test_plugin_in_pre_with_header


-- 
kdmsnr - KADO, Masanori
http://capsctrl.que.jp/kdmsnr/

--
ML: hikidoc@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

->     156 2010-03-07 09:21 [kdmsnr@g...         ] google-code-prettify を使いたい         
       160 2010-08-10 17:19 ┗[kimuraw@i...        ]