1#!perl 2 3use lib qw(t) ; 4use common ; 5 6my $tests = [ 7 8 { 9 name => 'pre_delim', 10 opts => { 11 pre_delim => '<%', 12 }, 13 data => { 14 foo => 'FOO is 3', 15 BAR => 'bar is baz', 16 }, 17 template => <<TEMPLATE, 18<%foo%] 19<%BAR%] 20TEMPLATE 21 expected => <<EXPECTED, 22FOO is 3 23bar is baz 24EXPECTED 25 }, 26 { 27 name => 'post_delim', 28 opts => { 29 post_delim => '%>', 30 }, 31 data => { 32 foo => 'FOO is 3', 33 BAR => 'bar is baz', 34 }, 35 template => <<TEMPLATE, 36[%foo%> 37[%BAR%> 38TEMPLATE 39 expected => <<EXPECTED, 40FOO is 3 41bar is baz 42EXPECTED 43 }, 44 { 45 name => 'pre/post_delim', 46 opts => { 47 pre_delim => '<%', 48 post_delim => '%>', 49 }, 50 data => { 51 foo => 'FOO is 3', 52 BAR => 'bar is baz', 53 }, 54 template => <<TEMPLATE, 55<%foo%> 56<%BAR%> 57TEMPLATE 58 expected => <<EXPECTED, 59FOO is 3 60bar is baz 61EXPECTED 62 }, 63 { 64 name => 'pre/post_delim regexes', 65 opts => { 66 pre_delim => qr/A+/, 67 post_delim => qr/B+/, 68 }, 69 data => { 70 foo => 'FOO is 3', 71 bAR => 'bar is baz', 72 }, 73 template => <<TEMPLATE, 74AAAfooBBBBB 75AbARB 76TEMPLATE 77 expected => <<EXPECTED, 78FOO is 3 79bar is baz 80EXPECTED 81 }, 82 { 83 name => 'chunk delim', 84 opts => { 85 pre_delim => '<%', 86 post_delim => '%>', 87 }, 88 data => { 89 foo => { FOO => 3 }, 90 bar => { BAR => 4 }, 91 }, 92 template => <<TEMPLATE, 93<%START foo%> 94<%FOO%> 95<%END foo%> 96<%START bar%><%BAR%><%END bar%> 97TEMPLATE 98 expected => <<EXPECTED, 99 1003 101 1024 103EXPECTED 104 }, 105 106 { 107 name => 'chunk delim - array of hashes', 108 opts => { 109 pre_delim => '<%', 110 post_delim => '%>', 111 }, 112 data => [ 113 { 114 foo => { FOO => 3 }, 115 bar => { BAR => 4 }, 116 }, 117 { 118 foo => { FOO => 6 }, 119 bar => { BAR => 'quux' }, 120 } 121 ], 122 template => <<TEMPLATE, 123<%START foo%> 124<%FOO%> 125<%END foo%> 126<%START bar%><%BAR%><%END bar%> 127TEMPLATE 128 expected => <<EXPECTED, 129 1303 131 1324 133 1346 135 136quux 137EXPECTED 138 }, 139 { 140 name => 'greedy chunk', 141 opts => { 142 greedy_chunk => 1, 143 }, 144 data => { 145 FOO => 'foo', 146 }, 147 template => <<TEMPLATE, 148[%START FOO%] 149[%START FOO%] 150bar 151[%END FOO%] 152[%END FOO%] 153TEMPLATE 154 expected => <<EXPECTED, 155foo 156EXPECTED 157 }, 158 { 159 name => 'not greedy chunk', 160 opts => { 161 greedy_chunk => 0, 162 }, 163 data => { 164 FOO => 'foo', 165 }, 166 template => <<TEMPLATE, 167[%START FOO%] 168[%START FOO%] 169bar 170[%END FOO%] 171[%END FOO%] 172TEMPLATE 173 expected => <<EXPECTED, 174foo 175[%END FOO%] 176EXPECTED 177 }, 178 { 179 name => 'token_re', 180 opts => { 181 token_re => qw/[-\w]+?/, 182 }, 183 data => { 184 'foo-bar' => 'FOO is 3', 185 'BAR-BAZ' => 'bar is baz', 186 }, 187 template => <<TEMPLATE, 188[%foo-bar%] 189[%BAR-BAZ%] 190TEMPLATE 191 expected => <<EXPECTED, 192FOO is 3 193bar is baz 194EXPECTED 195 }, 196] ; 197 198template_tester( $tests ) ; 199 200exit ; 201