で,python だしきっとモジュールあるでしょう,というので探すと stackoverflow に殆どそのままの記事があり (Github-Flavored-Markdown in Python - Stack Overflow), misaka というモジュールが紹介されているので (名前の由来が気になるところだ), これを使うことにする.いわく,
GitHub uses Redcarpet which is really a Ruby binding built by github for Sundown.でこれの python binding が misaka, とのことだ.
…と思ったらこれまた manual に ほとんどそのままの例 があり,この例では言語指定があった場合には pygments でよしなに highlight することになってるのを,syntaxhighlighter を使う表記に書き換える.
class BleepRenderer(msk.HtmlRenderer, msk.SmartyPants): def block_code(self, text, lang): if not lang: return '<pre><code>{}</code></pre>'.format( cgi.escape(text.strip())) return '<pre class="brush: {}">\n{}\n</pre>'.format( lang, cgi.escape(text.strip()))言語名指定がない場合は
cgi.escape
してやる感じに.まあこんな感じだろうか.あとは最後のほうのに従ってdef convert(filename): renderer = BleepRenderer() md = msk.Markdown(renderer, extensions = msk.EXT_FENCED_CODE | msk.EXT_NO_INTRA_EMPHASIS) with open(filename, 'r') as f: md_to_convert = f.read() return md.render(md_to_convert)でファイルを変換の形に.後は
main
をよしなに書けばよろしい.$ md_to_synlighter foo.md
で foo.conv.html
ができる感じにしました.これで記事書きがだいぶ楽になりました (emmet つかう好機でもあるわけだけど,どうしよう).
No comments:
Post a Comment