Common Template HTMLタグ版文法ジャケットを追加します。
3132 ワード
Common Template(
http://www.commontemplate.org)は注釈版と属性版の文法ジャケットを提供しています。
注釈版文法ジャケット:
属性版の文法ジャケットもできますが、変換に時間がかかります。また、不規則なHTML文法の互換性があります。
桂林はXML/HTMLタグ版の文法ジャケットに参加することを提案しています。
Resource Filter拡張点を用いて実現し、
リソースの読み込み時に簡単な正規表現を使って置換します。
HTML文法を解析しないと、不規則なHTML文法互換問題がありません。
二つの正規表現だけで変換が完了しました。
0.8.7バージョンからサポートを開始します。
参照:
http://www.commontemplate.org
http://www.commontemplate.org)は注釈版と属性版の文法ジャケットを提供しています。
注釈版文法ジャケット:
<html>
<body>
<!--$if{users != null && users.size &gt; 0}-->
<table border="1">
<!--$for{user : users}-->
<tr>
<td><!--$output{for.index + 1}-->1<!--$end--></td>
<td><!--$output{user.name}-->james<!--$end--></td>
<td><!--$output{user.coins}-->2.00<!--$end--></td>
</tr>
<!--$end-->
</table>
<!--$end-->
</body>
</html>
属性版文法ジャケット:
<html>
<body>
<table ct:if="users != null && users.size &gt; 0" border="1">
<tr ct:for="user : users">
<td><span ct:output="for.index + 1">1</span></td>
<td><span ct:output="user.name">james</span></td>
<td><span ct:output="user.coins">2.00</span></td>
</tr>
</table>
</body>
</html>
XML/HTMLにテンプレートが適用される場合、完全なDOMモデル構造を維持する必要があります。属性版の文法ジャケットもできますが、変換に時間がかかります。また、不規則なHTML文法の互換性があります。
桂林はXML/HTMLタグ版の文法ジャケットに参加することを提案しています。
<html>
<body>
<ct:if param="users != null && users.size &gt; 0">
<table border="1">
<ct:for param="user : users">
<tr>
<td><ct:out param="for.index + 1"/></td>
<td><ct:out param="user.name"/></td>
<td><ct:out param="user.coins"/></td>
</tr>
</ct:for>
</table>
</ct:if>
</body>
</html>
その構造と標準文法は一対一で、とても便利です。Resource Filter拡張点を用いて実現し、
リソースの読み込み時に簡単な正規表現を使って置換します。
HTML文法を解析しないと、不規則なHTML文法互換問題がありません。
二つの正規表現だけで変換が完了しました。
text = text.replaceAll("\\<ct\\s*\\:\\s*([0-9|_|A-Z|a-z]+)\\s+param\\s*\\=\\s*\\"([^\\"]+)\\"\\s*\\/?\\>", "\\$$1{$2}");
text = text.replaceAll("\\<\\/\\s*ct\\s*\\:\\s*([0-9|_|A-Z|a-z]+)\\s*\\>", "\\$end{$1}");
テンプレートのリソースをロードする時、メモリの消耗と変換時間がありますが、消費は大きくありません。0.8.7バージョンからサポートを開始します。
参照:
http://www.commontemplate.org