javaScript Template のこと。HTML Parser制作あれこれ
JavaScript Templateを作るにあたって、いわゆるパーサーってのはたくさん作ってます。
HTMLタグの分離、タグの中の属性、{tpl::if}で使ってるif文を数式にして計算するとか、そのへんです。
自分で1文字ずつ解釈するようなパーサーを作ってるので、ソースコードはものすごくごちゃごちゃしてるんですが、Adobe の Spryのコードを見てみると、やはり正規表現を使ってる様子。
う~ん、、、やっぱりこういうのは正規表現を使った方が早いんだけど、自分にはそういう正規表現を考えるのは無理です><
独自の属性はそれでいいとして、今苦労してるのがonclickとかのイベント属性。
onclick=”func1(‘abc,def’, ‘ghi()jkl’);func2(‘abc’abc’);func3(‘abc;def’)”>
文字列やエスケープが無ければ簡単なんだけど、なんかややこしくなってます。
new Function()を使って文字列からfunctionは作れるので、それをaddEventListener / attachEventに入れればいいけど、Spryではそういう判断はせずに、通常のattributesしか見てない様子。
なんか、parentNode.innerHTMLとか出てくるんだけど、やっぱりinnerHTMLにほりこんでるのかなぁ。。。
PerlのHTTP::Parserではイベント属性とか関係ないから、属性名だけ見てあとは一緒(^^;
ルートノードがないとparentNode.innerHTMLは当然使えないわけで、どうすんの!? (いや、ある程度はできてるんですが)