[jekyll] 生成されるHTMLから空行を取り除くプラグイン

jekyllが吐き出すHTMLの先頭に空行が入ってたり変なところに空行が連続してるのが気になったのでプラグインを書いてみました。

ソースコード

remove-empty-lines-html.rb

module Jekyll
  module Convertible
    def write(dest)
      path = destination(dest)
      FileUtils.mkdir_p(File.dirname(path))
      if File.extname(path).downcase == '.html' then
        self.output.strip!
        reg = /<\/?pre[^>]*>/i
        pres = self.output.scan(reg)
        tary = self.output.split(reg)
        oary = []
        reg = /^[\s\t]*(\r\n|\r|\n)/
        tary.each_with_index { |e, i|
          oary << ( i % 2 != 0 ? e : e.gsub(reg, '') )
          oary << pres[i] if pres.size > i
        }
        self.output = oary.join('')
      end
      File.open(path, 'w') do |f|
        f.write( self.output )
      end
    end
  end
end

説明

生成されるファイルへの書き込み部分をオーバーライド。
<pre>の中では空行を使いたい場合が多々あるので正規表現で分割して偶数要素だけに処理を施して結合してます。 <xmp>は無視しちゃってるけど使う人いないよね・・・?

blog comments powered by Disqus