syntax highlighting in bloggart

Elliptium は bloggart というブログエンジンをちょっと改造したもので動いています. 長らく syntax highlight の方法が分からなかったのですが, やっと分かりました.

bloggart には docutils と pygments がライブラリとして入っているので,

.. sourcecode:: <syntax type>

   hoge
   fuga

とやるだけでした.

docutils から pygments の syntax highlight 機能を利用するには http://www.deffbeff.com/blog/2009/06/using-pygments-with-docutils/ にある方法が標準的です. bloggart では rst_directive.py をモジュールが読み込まれる位置に持ってきて対応しています.

<syntax type> が取り得る文法を調べると, pygments.lexers._mapping.LEXERS という辞書を見ると良いようです. この辞書の値はタプルになっていて, 第3要素にある文字列が <syntax type> に来ることができます.

以上, ほぼ自分用のメモでした.

new version test

Django のバージョンを 0.96 から最新に上げてみたので動作テスト.

本家の bloggart からソースを取ってきて, ローカルでテストして良さそうだったので master にマージ.

手順を記録しておく.

$ git branch Arachnid
$ git checkout Arachnid
$ git pull https://github.com/Arachnid/bloggart.git
(適当に conflict を直す)
$ git checkout master
$ git merge Arachnid
(適当に conflict を直す)
(AppEngineLauncher で動作確認)
$ git commit -a -m "renew"
$ git push
(AppEngineLauncher で deploy)

仕事で git 使うようになってから, だいぶ git と仲良くなれた. そのおかげで今回の作業もだいぶスムーズに進んだ.

参考ページ: http://progit.org/book/ja/ch3-2.html

bloggart でのエラーとその解消

記事が書けない

1ヶ月前くらいのある時期から, このブログのブログエンジンである bloggart で新しい記事が書けない状態が続きました. 新しく記事を書こうとすると TaskAlreadyExistsError が起きてしまい処理が止まってしまっていました.

今までちゃんと書けてたのに何故? と調べてみると, 実はそのエラーは今までも出ることがあって, その都度握り潰していました. (この対応がいいかどうかはさておき) なぜそのエラーが出てくるようになったかと言うと, Google App Engine の API が変更されパッケージが変更されていました. 具体的には google.appengine.api.labs.taskqueue.TaskAlreadyExistsError から google.appengine.api.taskqueue.TaskAlreadyExistsError に変更になりました.

Google App Engine に不慣れで, なんでエラーが出るのか分からず解決に時間がかかってしまいました. ちゃんとエラーとソースを読めば良かったんですが, それでも API の変更までは想像が及びませんでした. Google App Engine SDK のバージョンアップがあった場合は気を付けないといけないですね.

Licenses