目的
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を書くのがかなり楽になる。