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ください 😇