読者です 読者をやめる 読者になる 読者になる

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

Rulesmarkdown の filter と colorize_syntax の間に噛ませてやればいい

    filter :redcarpet, options: {fenced_code_blocks: true}
    filter :unko
    filter :colorize_syntax, default_colorizer: :rouge

カッとなった時もちゃんとクラス名考えようと思った