@@ -173,89 +173,89 @@ |
||
| 173 | 173 | |
| 174 | 174 | $templateAndExpansionData = [ |
| 175 | 175 | 'level 1' => [ |
| 176 | - ['foo', 'foo'], |
|
| 177 | - ['{var}', 'value'], |
|
| 178 | - ['{hello}', 'Hello%20World%21'], |
|
| 179 | - ['{bool}', '1'], |
|
| 176 | + ['foo', 'foo'], |
|
| 177 | + ['{var}', 'value'], |
|
| 178 | + ['{hello}', 'Hello%20World%21'], |
|
| 179 | + ['{bool}', '1'], |
|
| 180 | 180 | ], |
| 181 | 181 | 'level 2' => [ |
| 182 | - ['{+var}', 'value'], |
|
| 183 | - ['{+hello}', 'Hello%20World!'], |
|
| 184 | - ['{+path}/here', '/foo/bar/here'], |
|
| 185 | - ['here?ref={+path}', 'here?ref=/foo/bar'], |
|
| 182 | + ['{+var}', 'value'], |
|
| 183 | + ['{+hello}', 'Hello%20World!'], |
|
| 184 | + ['{+path}/here', '/foo/bar/here'], |
|
| 185 | + ['here?ref={+path}', 'here?ref=/foo/bar'], |
|
| 186 | 186 | ], |
| 187 | 187 | 'level 3' => [ |
| 188 | - ['X{#var}', 'X#value'], |
|
| 189 | - ['X{#hello}', 'X#Hello%20World!'], |
|
| 190 | - ['map?{x,y}', 'map?1024,768'], |
|
| 191 | - ['{x,hello,y}', '1024,Hello%20World%21,768'], |
|
| 192 | - ['{+x,hello,y}', '1024,Hello%20World!,768'], |
|
| 193 | - ['{+path,x}/here', '/foo/bar,1024/here'], |
|
| 194 | - ['{#x,hello,y}', '#1024,Hello%20World!,768'], |
|
| 195 | - ['{#path,x}/here', '#/foo/bar,1024/here'], |
|
| 196 | - ['X{.var}', 'X.value'], |
|
| 197 | - ['X{.x,y}', 'X.1024.768'], |
|
| 198 | - ['{/var}', '/value'], |
|
| 199 | - ['{/var,x}/here', '/value/1024/here'], |
|
| 200 | - ['{;x,y}', ';x=1024;y=768'], |
|
| 201 | - ['{;x,y,empty}', ';x=1024;y=768;empty'], |
|
| 202 | - ['{?x,y}', '?x=1024&y=768'], |
|
| 203 | - ['{?x,y,empty}', '?x=1024&y=768&empty='], |
|
| 204 | - ['{?x,y,undef}', '?x=1024&y=768'], |
|
| 205 | - ['?fixed=yes{&x}', '?fixed=yes&x=1024'], |
|
| 206 | - ['{&x,y,empty}', '&x=1024&y=768&empty='], |
|
| 188 | + ['X{#var}', 'X#value'], |
|
| 189 | + ['X{#hello}', 'X#Hello%20World!'], |
|
| 190 | + ['map?{x,y}', 'map?1024,768'], |
|
| 191 | + ['{x,hello,y}', '1024,Hello%20World%21,768'], |
|
| 192 | + ['{+x,hello,y}', '1024,Hello%20World!,768'], |
|
| 193 | + ['{+path,x}/here', '/foo/bar,1024/here'], |
|
| 194 | + ['{#x,hello,y}', '#1024,Hello%20World!,768'], |
|
| 195 | + ['{#path,x}/here', '#/foo/bar,1024/here'], |
|
| 196 | + ['X{.var}', 'X.value'], |
|
| 197 | + ['X{.x,y}', 'X.1024.768'], |
|
| 198 | + ['{/var}', '/value'], |
|
| 199 | + ['{/var,x}/here', '/value/1024/here'], |
|
| 200 | + ['{;x,y}', ';x=1024;y=768'], |
|
| 201 | + ['{;x,y,empty}', ';x=1024;y=768;empty'], |
|
| 202 | + ['{?x,y}', '?x=1024&y=768'], |
|
| 203 | + ['{?x,y,empty}', '?x=1024&y=768&empty='], |
|
| 204 | + ['{?x,y,undef}', '?x=1024&y=768'], |
|
| 205 | + ['?fixed=yes{&x}', '?fixed=yes&x=1024'], |
|
| 206 | + ['{&x,y,empty}', '&x=1024&y=768&empty='], |
|
| 207 | 207 | ], |
| 208 | 208 | 'level 4' => [ |
| 209 | - ['{var:3}', 'val'], |
|
| 210 | - ['{var:30}', 'value'], |
|
| 211 | - ['{list}', 'red,green,blue'], |
|
| 212 | - ['{list*}', 'red,green,blue'], |
|
| 213 | - ['{keys}', 'semi,%3B,dot,.,comma,%2C'], |
|
| 214 | - ['{keys*}', 'semi=%3B,dot=.,comma=%2C'], |
|
| 215 | - ['{+path:6}/here', '/foo/b/here'], |
|
| 216 | - ['{+list}', 'red,green,blue'], |
|
| 217 | - ['{+list*}', 'red,green,blue'], |
|
| 218 | - ['{+keys}', 'semi,;,dot,.,comma,,'], |
|
| 219 | - ['{+keys*}', 'semi=;,dot=.,comma=,'], |
|
| 220 | - ['{#path:6}/here', '#/foo/b/here'], |
|
| 221 | - ['{#list}', '#red,green,blue'], |
|
| 222 | - ['{#list*}', '#red,green,blue'], |
|
| 223 | - ['{#keys}', '#semi,;,dot,.,comma,,'], |
|
| 224 | - ['{#keys*}', '#semi=;,dot=.,comma=,'], |
|
| 225 | - ['X{.var:3}', 'X.val'], |
|
| 226 | - ['X{.list}', 'X.red,green,blue'], |
|
| 227 | - ['X{.list*}', 'X.red.green.blue'], |
|
| 228 | - ['X{.keys}', 'X.semi,%3B,dot,.,comma,%2C'], |
|
| 229 | - ['X{.keys*}', 'X.semi=%3B.dot=..comma=%2C'], |
|
| 230 | - ['{/var:1,var}', '/v/value'], |
|
| 231 | - ['{/list}', '/red,green,blue'], |
|
| 232 | - ['{/list*}', '/red/green/blue'], |
|
| 233 | - ['{/list*,path:4}', '/red/green/blue/%2Ffoo'], |
|
| 234 | - ['{/keys}', '/semi,%3B,dot,.,comma,%2C'], |
|
| 235 | - ['{/keys*}', '/semi=%3B/dot=./comma=%2C'], |
|
| 236 | - ['{;hello:5}', ';hello=Hello'], |
|
| 237 | - ['{;list}', ';list=red,green,blue'], |
|
| 238 | - ['{;list*}', ';list=red;list=green;list=blue'], |
|
| 239 | - ['{;keys}', ';keys=semi,%3B,dot,.,comma,%2C'], |
|
| 240 | - ['{;keys*}', ';semi=%3B;dot=.;comma=%2C'], |
|
| 241 | - ['{?var:3}', '?var=val'], |
|
| 242 | - ['{?list}', '?list=red,green,blue'], |
|
| 243 | - ['{?list*}', '?list=red&list=green&list=blue'], |
|
| 244 | - ['{?keys}', '?keys=semi,%3B,dot,.,comma,%2C'], |
|
| 245 | - ['{?keys*}', '?semi=%3B&dot=.&comma=%2C'], |
|
| 246 | - ['{&var:3}', '&var=val'], |
|
| 247 | - ['{&list}', '&list=red,green,blue'], |
|
| 248 | - ['{&list*}', '&list=red&list=green&list=blue'], |
|
| 249 | - ['{&keys}', '&keys=semi,%3B,dot,.,comma,%2C'], |
|
| 250 | - ['{&keys*}', '&semi=%3B&dot=.&comma=%2C'], |
|
| 251 | - ['{.null}', ''], |
|
| 252 | - ['{.null,var}', '.value'], |
|
| 253 | - ['X{.empty_keys*}', 'X'], |
|
| 254 | - ['X{.empty_keys}', 'X'], |
|
| 209 | + ['{var:3}', 'val'], |
|
| 210 | + ['{var:30}', 'value'], |
|
| 211 | + ['{list}', 'red,green,blue'], |
|
| 212 | + ['{list*}', 'red,green,blue'], |
|
| 213 | + ['{keys}', 'semi,%3B,dot,.,comma,%2C'], |
|
| 214 | + ['{keys*}', 'semi=%3B,dot=.,comma=%2C'], |
|
| 215 | + ['{+path:6}/here', '/foo/b/here'], |
|
| 216 | + ['{+list}', 'red,green,blue'], |
|
| 217 | + ['{+list*}', 'red,green,blue'], |
|
| 218 | + ['{+keys}', 'semi,;,dot,.,comma,,'], |
|
| 219 | + ['{+keys*}', 'semi=;,dot=.,comma=,'], |
|
| 220 | + ['{#path:6}/here', '#/foo/b/here'], |
|
| 221 | + ['{#list}', '#red,green,blue'], |
|
| 222 | + ['{#list*}', '#red,green,blue'], |
|
| 223 | + ['{#keys}', '#semi,;,dot,.,comma,,'], |
|
| 224 | + ['{#keys*}', '#semi=;,dot=.,comma=,'], |
|
| 225 | + ['X{.var:3}', 'X.val'], |
|
| 226 | + ['X{.list}', 'X.red,green,blue'], |
|
| 227 | + ['X{.list*}', 'X.red.green.blue'], |
|
| 228 | + ['X{.keys}', 'X.semi,%3B,dot,.,comma,%2C'], |
|
| 229 | + ['X{.keys*}', 'X.semi=%3B.dot=..comma=%2C'], |
|
| 230 | + ['{/var:1,var}', '/v/value'], |
|
| 231 | + ['{/list}', '/red,green,blue'], |
|
| 232 | + ['{/list*}', '/red/green/blue'], |
|
| 233 | + ['{/list*,path:4}', '/red/green/blue/%2Ffoo'], |
|
| 234 | + ['{/keys}', '/semi,%3B,dot,.,comma,%2C'], |
|
| 235 | + ['{/keys*}', '/semi=%3B/dot=./comma=%2C'], |
|
| 236 | + ['{;hello:5}', ';hello=Hello'], |
|
| 237 | + ['{;list}', ';list=red,green,blue'], |
|
| 238 | + ['{;list*}', ';list=red;list=green;list=blue'], |
|
| 239 | + ['{;keys}', ';keys=semi,%3B,dot,.,comma,%2C'], |
|
| 240 | + ['{;keys*}', ';semi=%3B;dot=.;comma=%2C'], |
|
| 241 | + ['{?var:3}', '?var=val'], |
|
| 242 | + ['{?list}', '?list=red,green,blue'], |
|
| 243 | + ['{?list*}', '?list=red&list=green&list=blue'], |
|
| 244 | + ['{?keys}', '?keys=semi,%3B,dot,.,comma,%2C'], |
|
| 245 | + ['{?keys*}', '?semi=%3B&dot=.&comma=%2C'], |
|
| 246 | + ['{&var:3}', '&var=val'], |
|
| 247 | + ['{&list}', '&list=red,green,blue'], |
|
| 248 | + ['{&list*}', '&list=red&list=green&list=blue'], |
|
| 249 | + ['{&keys}', '&keys=semi,%3B,dot,.,comma,%2C'], |
|
| 250 | + ['{&keys*}', '&semi=%3B&dot=.&comma=%2C'], |
|
| 251 | + ['{.null}', ''], |
|
| 252 | + ['{.null,var}', '.value'], |
|
| 253 | + ['X{.empty_keys*}', 'X'], |
|
| 254 | + ['X{.empty_keys}', 'X'], |
|
| 255 | 255 | ], |
| 256 | 256 | 'extra' => [ |
| 257 | 257 | // Test that missing expansions are skipped |
| 258 | - ['test{&missing*}', 'test'], |
|
| 258 | + ['test{&missing*}', 'test'], |
|
| 259 | 259 | // Test that multiple expansions can be set |
| 260 | 260 | ['http://{var}/{var:2}{?keys*}', 'http://value/va?semi=%3B&dot=.&comma=%2C'], |
| 261 | 261 | // Test more complex query string stuff |