カスタムタグ的ななにか

JavaプログラマなんでTaglibみたいなのが欲しい。
そういう質問をしたら、Webhelper使うか、Jinja2にはFilterが実装されているよ、との事。
ほほうFilterとな。初めて聞いた。
自分はmako党なんで、makoにもFilterなるものが無いか探してみた。

参考:
http://docs.makotemplates.org/en/latest/filtering.html

test.html(mako実装)

<%!
	import myfilters as fil
%>

${honbun | fil.auto_link, n}

myfilters.py

def auto_link(text):
    '''HTTP等のURLがあったらリンクにする'''
    return re.sub('(https?|ftp|news)(://[0-9a-zA-z\+\$\;\?\.%,!#~*/:@&=_-]+)',
    '<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>',
    text)

これで自動的にURLにAタグをかぶせてくれる。


引数は必ず"text"一つのみ。
ただし、中身は何でも良いみたいなので
test2.html

${(honbun1,honbun2) | fil.get_tuple, n}
def get_tuple(text):
    name1, name2 = text
    return name2 + name1

nをつけないとシングルクオートをエスケープしちゃうんで必須かな。

利点は、やはり単体テストがフィルタに対して出来る事だろう。
makoちゃん様々だ。