qiita-markdownをMiddlemanで使えるようにするGemを作った
github pages で blog を公開しようと思ってゆるりと構築中なんですが、静的ジェネレータとして Middleman を使うことにしました。
esa.io の GitHub Webhook から記事を投稿することを目論んでるので、記事の執筆には Markdown を使うことになります。
で、esa の Markdown って拡張されていて、その中でも コードブロックのファイル名表示 がどうしても使いたいんです。 良い機能ですよね。
というわけで esa の Markdown をそのままレンダリングするものがあればいいんですが、なさそうなので同じくファイル名表示ができる qiita-markdown を使うことにしました。
といっても Middleman 内部では各種レンダリングに Tilt を使用しているので、Tilt に対応させれば使うことはできます。
次のようなクラスをひとつ作るだけで OK です。 (Middleman が対応している Tilt がちょっと古いので注意が必要です)
# frozen_string_literal: true
require "tilt/template"
require "qiita/markdown"
module Tilt
class QiitaTemplate < Template
self.default_mime_type = "text/html"
def self.engine_initialized?
defined? Qiita::Markdown::Processor
end
def prepare
@engine = Qiita::Markdown::Processor.new
@output = nil
end
def evaluate(_scope, _locals, &block)
@output ||= @engine.call(data)[:output].to_s
end
end
end
なんですが簡単に使えるように Gem にもしました。
middleman-renderers-qiita_template | RubyGems.org | your community gem host
Gemfile に gem "middleman-renderers-qiita_template" を追加して、config.rb に
set :markdown_engine_prefix, Middleman::Renderers
set :markdown_engine, :qiita
と追加すれば使えます。
突貫で作ったのでいろいろできてない感はあります。
数式への対応とか Middleman 風のリンクへの対応とかしたいですねー。
何かアレばぜひ PR ください 😇