nanoc + redcarpet + colorize_syntax するための Filter
redcarpet は
```ruby ```
な markdown を
<pre><code class="ruby"> </code></pre>
にするんだけど、nanoc の colorize_syntax は
<pre><code class="language-ruby"> </code></pre>
みたいに言語名の前に language-
って付いてないと認識してくれないので雑にフィルター書いた。
lib
以下にこんなん置いておいて
class Unko < Nanoc3::Filter def run(content, params={}) doc = Nokogiri::HTML.parse(content) doc.css("pre > code").each do |element| next unless element["class"] lang = element["class"] element["class"] = "language-#{lang}" end doc.to_html end end Nanoc3::Filter.register "Unko", :unko
Rules
の markdown
の filter と colorize_syntax
の間に噛ませてやればいい
filter :redcarpet, options: {fenced_code_blocks: true} filter :unko filter :colorize_syntax, default_colorizer: :rouge
カッとなった時もちゃんとクラス名考えようと思った