Docurainのテンプレート
DocurainではExcelテンプレートに差し込みたいデータの位置をプレースホルダーとして記述します。
また、出力する帳票の行を動的に増やす、特定の条件のときだけ表示する、などの動的な部分は組み込みのマクロ命令により実現します。 このマクロ命令はVelocityに準拠しています。
式リテラル
今回ご紹介する式リテラルはこのVelocityの制約を突破するために追加されたDocurain独自の機能です。 Velocityの制約とは、いわゆる「式」を使える箇所が限られている点です。
通常、式を指定できるのは
#if($a < 0) ... #end #set($b = $a + 1)
のような箇所だけです。つまり、
$a 足す 1 は $a + 1 です。 #set($list = [$a, $a + 1, $a + 2])
のような記述ができず、
#set($plus1 = $a + 1) #set($plus2 = $a + 2) $a 足す 1 は $plus1 です。 #set($list = [$a, $plus1, $plus2])
のように回りくどい書き方になります。なかなかキツいですねこれは。
エンジニアは怠惰であるべき。怠けるために全力を出した結果、生み出されたのが「式リテラル」です。
使用例
式リテラルは、バッククオート `
で囲んだ文字列がそのまま値として評価されます。*1
↑のテンプレートを式リテラルを使用することにより簡潔にすることが可能です。
#set($plus1 = %{num} + 1) %{num} 足す 1 は $plus1 です。 |
→ | %{num} 足す 1 は `%{num} + 1` です。 |
#set($b = %{a} + 1) #set($c = %{a} + 2) #set($list = [%{a}, $b, $c]) |
→ | #set($list = [%{a}, `%{a} + 1`, `%{a} + 2`]) |
のように記述できるようになりました。
スッキリしてわかりやすくなりましたね! Javascriptのテンプレートリテラルに似せたデザインにしたので、違和感も少ないかと思います。
他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照しお試しください。
*1:現在のところバッククオートのエスケープはできません。すなわち、バッククオートを含む式リテラルは使用できません。