Nanoc とは?
静的サイトジェネレーターです。jekyllryやhonkitとかの仲間です。
GitLabで静的ページを作るのに、honkitを使っていたのですが、最近、Nanocを試していました。
Nanocの利点
- ビルドが速い(honkitと比較すると爆速といえる)
- filterを書くのが簡単
デメリットは、honkitだと、色々プラグインが存在して楽なんですが、あんまりなさそう?というのと、僕がRubyに慣れてないくらいですね。
お題の件の通り、honkitだと、PlantUMLもプラグインで表示ができるのですが、nanoc ではできません。
Nanocのフィルターを書いてPlantUMLに対応する
ですが、Nanocは、自分で簡単にフィルターを書くことができます。
フィルターは、lib/nanoc/filters/
の下に、.rb
なファイルを作り、identifier
に名前をつけて、それを、Rules
ファイルの中で使うだけです。
もともと、markdownをhtmlに変えるのは、kramdownというフィルターがありますが、このソースコードをコピーしてきて、下記のパッチを当てて、適当なファイル名で保存すればOKです。
@@ -2,10 +2,10 @@ module Nanoc::Filters # @api private - class Kramdown < Nanoc::Filter - identifier :kramdown + class KramdownPlantUML < Nanoc::Filter + identifier :kramdownplantuml - requires 'kramdown' + requires 'kramdown-plantuml' # Runs the content through [Kramdown](https://kramdown.gettalong.org/). # Parameters passed to this filter will be passed on to Kramdown.
単に、名前を変えているのと、require しているものをkramdown
からkramdown-plantuml
に変えるだけですね。
そして、Rules
のほうで、
filter :kramdownplantuml, :input => "GFM"
のようにすれば、PlantUMLに対応することができます。