No Programming, No Life

プログラミング関連の話題や雑記

Groovyでテンプレートエンジン

Groovyにはテンプレートエンジンと呼ばれるものがあります。
埋め込みのプレースホルダを設けておいて、そこに値をバインドしていくっていうアレです。

サンプルだけでもメモしていきます。

SimpleTemplateEngine

まずは一番基本のものから。
バインディングで'tenki'に'晴れ'とかを紐付けてあげる感じの使い方です。
<%= %> とかだけでなく、${ tenki } とかでもいけます。

SimpleTemplateEngineTest.groovy
def f = new File('test1.template')
def engine = new groovy.text.SimpleTemplateEngine()
def binding = ['tenki': '晴れ']
def template = engine.createTemplate(f).make(binding)
println template.toString()
test1.template
こんにちは
今日の天気は<%= tenki %>です!

GStringTemplateEngine

これは知らなかった。テンプレート中にoutを使えるからバックスラッシュをエスケープしなくていいんですね。
暗黙変数outがjspみたいな感じ?

GStringTemplateEngineTest.groovy
def f = new File('test2.template')
def engine = new groovy.text.GStringTemplateEngine()
def binding = ['tenki': 1]
def template = engine.createTemplate(f).make(binding)
println template.toString()
test2.template
こんにちは
今日の天気は<%
switch(tenki) {
    case 0  : out << '晴れ'; break
    case 1  : out << '曇り'; break
    case 2  : out << '雨';   break
    default : out << '分かりません'; break
}
%>です!