dokkit 続報
dokkitをちょっと使ってみました。Roteからの乗り換え、なんとかできそうかなぁ?という感じ。
Roteの時は、設定やレイアウトにRubyのコードを書けるのをいいことに、かなり好き放題やっていたのですが、dokkitではYAMLで設定を書くのでどこまで融通が利くかまだ見切れてません。
テキスト→HTMLへの変換にdeplateとmarukuというフィルタが使えるのですが、どちらも入力がShift_JISだとうまく動かないようです。
入力をUTF-8にすればおおよそうまく動くようなのですが(厳密には確認してません)、入力ファイルをUTF-8にすると編集時にテキストエディタが文字コード判別に失敗したりして面倒です。
そこで、dokkitの設定ファイル(setup/setup.rb)をいじって、フィルタを追加してみました。見よう見まねで適当にでっち上げましたが、動いているようです。
require 'dokkit/environment' require 'nkf' include Dokkit::Environment module Dokkit module Filter class SjisUtf8 def filter(text) NKF.nkf('-S -w -x -m0', text) end end class Utf8Sjis def filter(text) NKF.nkf('-W -s -x -m0', text) end end end end environment do |env| env.select_document do |selection| selection.include('**/*') end env.filter_factory.add('sjis-utf8') { Dokkit::Filter::SjisUtf8.new } env.filter_factory.add('utf8-sjis') { Dokkit::Filter::Utf8Sjis.new } # p env.filter_factory end
私の場合、marukuを使ってMarkdown記法からHTMLに変換したいので、COMMON.yamlを以下のように書いてみました。(まだ調整中ですが)
--- format: - html: filter: - sjis-utf8 - erb - maruku-html layout: - simple ---