宣伝してないから誰も来ないだろうけど書いとく。
katagami は Python 2.X 用の XML (特に HTML) テンプレートエンジンです。
既存のテンプレートエンジンに較べ、次のような特徴があります。
- テンプレートエンジン固有の文法はありません。
- XML と Python の文法をそのまま使用します。
- 幾つかのハンドルされた XML attribute で制御構造を実現します。 (if, elif, else, for_, while, with, except, …)
- domain specific な文法を覚える必要はありません。
- Python スクリプトに不自然な制限はありません。
- python タグ内部を CDATA で記述すれば普通の Python スクリプトとほとんど同様に記述できます。
- XML attribute 内の Python スクリプトも極力 Python の文法に沿うようになっています。実行順も定義順と一致します。
- for は item in iterable の形式ですし、with は複数のコンテキスト (A() as a, B() as b) を扱えます。for_=”(index, item) in enumerate(iterable)” ももちろん使用できます。except=”SomeError as e” で例外も扱えます。
- 高速に動作します。
- expat と eval, compile に解析を丸投げするため、多分 mako よりも高速に動作します。ただしキャッシュ機能を持たないため、実際に使用された際にどれだけの差が出るかはわかりません。
- 低機能です。
- XML 内部に Python スクリプトを記述できるため、このテンプレートエンジンは include に相当する機能くらいしか持ちません
- XML 以外のテキストフォーマットには対応できません。
- Python 3 に対応していません。
- 対応は難しくありませんが…
- IronPython でも大体動作しましたが、現実的ではありませんでした。pyexpat にパッチをあてる必要があります。
- 実績がありません。
要するにテンプレートエンジンの使い方覚える (というかすぐに忘れる) くらいなら自分で作ったほうが早かったので。
setup.py sdist register だけじゃダメで upload しないといけなかった/(^o^)\ PyPI のドキュメントメチャクチャなの直さんと…
直した。