テンプレートエンジンを書くのです

現在作成中の自作フレームワークの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"と表示するというPHPSmarty的な機能を目標としていたり、していなかったり。

 #すっかりPHPに毒されているのです


。。。とここまで書いて、ループ処理で詰まる。複数行の繰り返し検出とかはどう取得したら良いのか、もうちょっと勉強してみます。