目的
Bloggerの投稿をmarkdownでやりたい
やり方
方法は色々あると思うが、markdownをhtml形式に変換するのが手っ取り早かった
Qiita:Pythonでmarkdownをhtmlにコンバートする
こちらにmarkdownの使い方はまとまっていたので上記記事を参照した
ただし、私のbloggerではcodeタグではなく、<pre class="prettyprint"></p>で行っている
デフォルトのままでは```はcodeに変換されてしまう。。
その為、このタグを上書きして独自のタグを使うためのextensionを作成した
コード
import markdown from markdown.inlinepatterns import Pattern from markdown.extensions import Extension import xml.etree.ElementTree as etree BACKTICK_RE = r'([```]{3})(.*?)\2' class CodePattern(Pattern): def handleMatch(self, m): if m.group(2) == '```': tag = 'pre' el = etree.Element(tag) el.text = m.group(3) el.set('class', "prettyprint") return el pass class CodeExtension(Extension): def extendMarkdown(self, md): # Delete the old patterns md.inlinePatterns.deregister('backtick') # Add our new MultiPattern multi = CodePattern(BACKTICK_RE) md.inlinePatterns.register(multi, 'backtick', 100) sample_text = ''' ※今回の箇所はここ※ ``` まさかコードも入れられるんですか? if (!lie) { return true; } ``` ''' md = markdown.Markdown(extensions=['tables', CodeExtension()]) print(md.convert(sample_text))
これを行うと、
<p>※今回の箇所はここ※ <pre class="prettyprint"> まさかコードも入れられるんですか? if (!lie) { return true; } </pre> </p>
と出力されるので、これをbloggerに貼り付ければHTMLを書くのがかなり楽になる。