File: interpolation.vm

package info (click to toggle)
velocity 1.7-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,856 kB
  • sloc: java: 41,240; xml: 15,001; sh: 180; sql: 18; makefile: 2
file content (82 lines) | stat: -rw-r--r-- 1,441 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#*

@test interpolation.vm

This template is used for Velocity regression testing.
If you alter this template make sure you change the
corresponding comparison file so that the regression
test doesn't fail incorrectly.

*#

Start with simple string interpolation :

#set($name = "jason")
$provider.concat("it will cost you $10.00", "")

#set($image = "dog")
$provider.concat("${image}.jpg", "")

#set($foo-bar = "foobar")
$provider.concat("${foo-bar}.jpg", "")

#set($foo_bar = "foobar")
$provider.concat("${foo_bar}.jpg", "")

#set($one = 1)
#set($two = 2)
#set($three = 3)
$provider.concat("${one}${two}${three}", "")
$provider.concat("$one $two $three", "")

How about a directive?  Sure :

#set($arr = ["a","b","c"])
#set($foo = "#foreach($a in $arr) >$a< #end")

$foo

For our next trick, lets interpolate a.... VelociMacro!

#macro( interpfoo )
  Hi, I'm a VM!
#end

#set($ivm = "#interpfoo()")

$ivm

And now, for something completely different :

#set($code = "#if(false) True #else False #end")

$code

Now, non interpolated stringlits :

#set($a = "$code")
#set($b = '$code')
#set($c = '$!$\!code')

$a
$b
$c

Now, check comments within strings.  double quotes they should be removed.
Single quotes, they should be kept literal.

#set($c1 = "test##test")
#set($c2 = "test ##test")
#set($c3 = "##test")
#set($c4 = "test#* hello *#test")
#set($c5 = 'test##test')
#set($c6 = 'test#* hello *#test')

$c1
$c2
$c3
$c4
$c5
$c6

-- end --