テンプレートエンジンを書くのです
現在作成中の自作フレームワークのView処理用にテンプレートエンジンを書くことにしました。
ひとまず最低限あれば良いな、という機能は以下の通り
- 変数のアサイン
- ループ処理
- ループ回数は配列 and 変数渡しの両方に対応
- 分岐
- ひとまずifだけかな...
とりあえず練習がてらに、変数のアサインについては下のように無理矢理書いてみた。『 {$変数}の形式で記述された部分に変数をアサイン』します。
def valuerepl( match ): x = match.group() x = x.replace("{$","") x = x.replace("}","") if assign.get(x): if type(assign[x]) == list: return u'list' elif type(assign[x]) == dict: return u'dict' else: return assign[x] else: return '' p = re.compile(r'{\$.*}') html_main = p.sub(valuerepl, html_main)
置換とかの方法が無理矢理すぎるので、改良します。
一応listとかdictとかが渡ったときは、それぞれ"list","dict"と表示するというPHPのSmarty的な機能を目標としていたり、していなかったり。
#すっかりPHPに毒されているのです
。。。とここまで書いて、ループ処理で詰まる。複数行の繰り返し検出とかはどう取得したら良いのか、もうちょっと勉強してみます。