2 "3.2.1 Variable Expansion" :
5 "count" : ["one", "two", "three"],
6 "dom" : ["example", "com"],
8 "hello" : "Hello World!",
12 "base" : "http://example.com/home/",
14 "list" : ["red", "green", "blue"],
15 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
24 ["{count}", "one,two,three"],
25 ["{count*}", "one,two,three"],
26 ["{/count}", "/one,two,three"],
27 ["{/count*}", "/one/two/three"],
28 ["{;count}", ";count=one,two,three"],
29 ["{;count*}", ";count=one;count=two;count=three"],
30 ["{?count}", "?count=one,two,three"],
31 ["{?count*}", "?count=one&count=two&count=three"],
32 ["{&count*}", "&count=one&count=two&count=three"]
35 "3.2.2 Simple String Expansion" :
38 "count" : ["one", "two", "three"],
39 "dom" : ["example", "com"],
41 "hello" : "Hello World!",
45 "base" : "http://example.com/home/",
47 "list" : ["red", "green", "blue"],
48 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
58 ["{hello}", "Hello%20World%21"],
62 ["{x,y}", "1024,768"],
63 ["{x,hello,y}", "1024,Hello%20World%21,768"],
64 ["?{x,empty}", "?1024,"],
65 ["?{x,undef}", "?1024"],
66 ["?{undef,y}", "?768"],
68 ["{var:30}", "value"],
69 ["{list}", "red,green,blue"],
70 ["{list*}", "red,green,blue"],
72 "comma,%2C,dot,.,semi,%3B",
73 "comma,%2C,semi,%3B,dot,.",
74 "dot,.,comma,%2C,semi,%3B",
75 "dot,.,semi,%3B,comma,%2C",
76 "semi,%3B,comma,%2C,dot,.",
77 "semi,%3B,dot,.,comma,%2C"
80 "comma=%2C,dot=.,semi=%3B",
81 "comma=%2C,semi=%3B,dot=.",
82 "dot=.,comma=%2C,semi=%3B",
83 "dot=.,semi=%3B,comma=%2C",
84 "semi=%3B,comma=%2C,dot=.",
85 "semi=%3B,dot=.,comma=%2C"
89 "3.2.3 Reserved Expansion" :
92 "count" : ["one", "two", "three"],
93 "dom" : ["example", "com"],
95 "hello" : "Hello World!",
99 "base" : "http://example.com/home/",
101 "list" : ["red", "green", "blue"],
102 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
112 ["{+hello}", "Hello%20World!"],
113 ["{+half}", "50%25"],
114 ["{base}index", "http%3A%2F%2Fexample.com%2Fhome%2Findex"],
115 ["{+base}index", "http://example.com/home/index"],
116 ["O{+empty}X", "OX"],
117 ["O{+undef}X", "OX"],
118 ["{+path}/here", "/foo/bar/here"],
119 ["{+path:6}/here", "/foo/b/here"],
120 ["here?ref={+path}", "here?ref=/foo/bar"],
121 ["up{+path}{var}/here", "up/foo/barvalue/here"],
122 ["{+x,hello,y}", "1024,Hello%20World!,768"],
123 ["{+path,x}/here", "/foo/bar,1024/here"],
124 ["{+list}", "red,green,blue"],
125 ["{+list*}", "red,green,blue"],
127 "comma,,,dot,.,semi,;",
128 "comma,,,semi,;,dot,.",
129 "dot,.,comma,,,semi,;",
130 "dot,.,semi,;,comma,,",
131 "semi,;,comma,,,dot,.",
132 "semi,;,dot,.,comma,,"
135 "comma=,,dot=.,semi=;",
136 "comma=,,semi=;,dot=.",
137 "dot=.,comma=,,semi=;",
138 "dot=.,semi=;,comma=,",
139 "semi=;,comma=,,dot=.",
140 "semi=;,dot=.,comma=,"
144 "3.2.4 Fragment Expansion" :
147 "count" : ["one", "two", "three"],
148 "dom" : ["example", "com"],
150 "hello" : "Hello World!",
154 "base" : "http://example.com/home/",
156 "list" : ["red", "green", "blue"],
157 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
166 ["{#var}", "#value"],
167 ["{#hello}", "#Hello%20World!"],
168 ["{#half}", "#50%25"],
169 ["foo{#empty}", "foo#"],
170 ["foo{#undef}", "foo"],
171 ["{#x,hello,y}", "#1024,Hello%20World!,768"],
172 ["{#path,x}/here", "#/foo/bar,1024/here"],
173 ["{#path:6}/here", "#/foo/b/here"],
174 ["{#list}", "#red,green,blue"],
175 ["{#list*}", "#red,green,blue"],
177 "#comma,,,dot,.,semi,;",
178 "#comma,,,semi,;,dot,.",
179 "#dot,.,comma,,,semi,;",
180 "#dot,.,semi,;,comma,,",
181 "#semi,;,comma,,,dot,.",
182 "#semi,;,dot,.,comma,,"
186 "3.2.5 Label Expansion with Dot-Prefix" :
189 "count" : ["one", "two", "three"],
190 "dom" : ["example", "com"],
192 "hello" : "Hello World!",
196 "base" : "http://example.com/home/",
198 "list" : ["red", "green", "blue"],
199 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
209 ["{.who,who}", ".fred.fred"],
210 ["{.half,who}", ".50%25.fred"],
211 ["www{.dom*}", "www.example.com"],
212 ["X{.var}", "X.value"],
213 ["X{.var:3}", "X.val"],
216 ["X{.list}", "X.red,green,blue"],
217 ["X{.list*}", "X.red.green.blue"],
219 "#comma,,,dot,.,semi,;",
220 "#comma,,,semi,;,dot,.",
221 "#dot,.,comma,,,semi,;",
222 "#dot,.,semi,;,comma,,",
223 "#semi,;,comma,,,dot,.",
224 "#semi,;,dot,.,comma,,"
227 "#comma=,,dot=.,semi=;",
228 "#comma=,,semi=;,dot=.",
229 "#dot=.,comma=,,semi=;",
230 "#dot=.,semi=;,comma=,",
231 "#semi=;,comma=,,dot=.",
232 "#semi=;,dot=.,comma=,"
234 ["X{.empty_keys}", "X"],
235 ["X{.empty_keys*}", "X"]
238 "3.2.6 Path Segment Expansion" :
241 "count" : ["one", "two", "three"],
242 "dom" : ["example", "com"],
244 "hello" : "Hello World!",
248 "base" : "http://example.com/home/",
250 "list" : ["red", "green", "blue"],
251 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
261 ["{/who,who}", "/fred/fred"],
262 ["{/half,who}", "/50%25/fred"],
263 ["{/who,dub}", "/fred/me%2Ftoo"],
264 ["{/var}", "/value"],
265 ["{/var,empty}", "/value/"],
266 ["{/var,undef}", "/value"],
267 ["{/var,x}/here", "/value/1024/here"],
268 ["{/var:1,var}", "/v/value"],
269 ["{/list}", "/red,green,blue"],
270 ["{/list*}", "/red/green/blue"],
271 ["{/list*,path:4}", "/red/green/blue/%2Ffoo"],
273 "/comma,%2C,dot,.,semi,%3B",
274 "/comma,%2C,semi,%3B,dot,.",
275 "/dot,.,comma,%2C,semi,%3B",
276 "/dot,.,semi,%3B,comma,%2C",
277 "/semi,%3B,comma,%2C,dot,.",
278 "/semi,%3B,dot,.,comma,%2C"
281 "/comma=%2C/dot=./semi=%3B",
282 "/comma=%2C/semi=%3B/dot=.",
283 "/dot=./comma=%2C/semi=%3B",
284 "/dot=./semi=%3B/comma=%2C",
285 "/semi=%3B/comma=%2C/dot=.",
286 "/semi=%3B/dot=./comma=%2C"
290 "3.2.7 Path-Style Parameter Expansion" :
293 "count" : ["one", "two", "three"],
294 "dom" : ["example", "com"],
296 "hello" : "Hello World!",
300 "base" : "http://example.com/home/",
302 "list" : ["red", "green", "blue"],
303 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
312 ["{;who}", ";who=fred"],
313 ["{;half}", ";half=50%25"],
314 ["{;empty}", ";empty"],
315 ["{;hello:5}", ";hello=Hello"],
316 ["{;v,empty,who}", ";v=6;empty;who=fred"],
317 ["{;v,bar,who}", ";v=6;who=fred"],
318 ["{;x,y}", ";x=1024;y=768"],
319 ["{;x,y,empty}", ";x=1024;y=768;empty"],
320 ["{;x,y,undef}", ";x=1024;y=768"],
321 ["{;list}", ";list=red,green,blue"],
322 ["{;list*}", ";list=red;list=green;list=blue"],
324 ";keys=comma,%2C,dot,.,semi,%3B",
325 ";keys=comma,%2C,semi,%3B,dot,.",
326 ";keys=dot,.,comma,%2C,semi,%3B",
327 ";keys=dot,.,semi,%3B,comma,%2C",
328 ";keys=semi,%3B,comma,%2C,dot,.",
329 ";keys=semi,%3B,dot,.,comma,%2C"
332 ";comma=%2C;dot=.;semi=%3B",
333 ";comma=%2C;semi=%3B;dot=.",
334 ";dot=.;comma=%2C;semi=%3B",
335 ";dot=.;semi=%3B;comma=%2C",
336 ";semi=%3B;comma=%2C;dot=.",
337 ";semi=%3B;dot=.;comma=%2C"
341 "3.2.8 Form-Style Query Expansion" :
344 "count" : ["one", "two", "three"],
345 "dom" : ["example", "com"],
347 "hello" : "Hello World!",
351 "base" : "http://example.com/home/",
353 "list" : ["red", "green", "blue"],
354 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
363 ["{?who}", "?who=fred"],
364 ["{?half}", "?half=50%25"],
365 ["{?x,y}", "?x=1024&y=768"],
366 ["{?x,y,empty}", "?x=1024&y=768&empty="],
367 ["{?x,y,undef}", "?x=1024&y=768"],
368 ["{?var:3}", "?var=val"],
369 ["{?list}", "?list=red,green,blue"],
370 ["{?list*}", "?list=red&list=green&list=blue"],
372 "?keys=comma,%2C,dot,.,semi,%3B",
373 "?keys=comma,%2C,semi,%3B,dot,.",
374 "?keys=dot,.,comma,%2C,semi,%3B",
375 "?keys=dot,.,semi,%3B,comma,%2C",
376 "?keys=semi,%3B,comma,%2C,dot,.",
377 "?keys=semi,%3B,dot,.,comma,%2C"
380 "?comma=%2C&dot=.&semi=%3B",
381 "?comma=%2C&semi=%3B&dot=.",
382 "?dot=.&comma=%2C&semi=%3B",
383 "?dot=.&semi=%3B&comma=%2C",
384 "?semi=%3B&comma=%2C&dot=.",
385 "?semi=%3B&dot=.&comma=%2C"
389 "3.2.9 Form-Style Query Continuation" :
392 "count" : ["one", "two", "three"],
393 "dom" : ["example", "com"],
395 "hello" : "Hello World!",
399 "base" : "http://example.com/home/",
401 "list" : ["red", "green", "blue"],
402 "keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
411 ["{&who}", "&who=fred"],
412 ["{&half}", "&half=50%25"],
413 ["?fixed=yes{&x}", "?fixed=yes&x=1024"],
414 ["{&var:3}", "&var=val"],
415 ["{&x,y,empty}", "&x=1024&y=768&empty="],
416 ["{&x,y,undef}", "&x=1024&y=768"],
417 ["{&list}", "&list=red,green,blue"],
418 ["{&list*}", "&list=red&list=green&list=blue"],
420 "&keys=comma,%2C,dot,.,semi,%3B",
421 "&keys=comma,%2C,semi,%3B,dot,.",
422 "&keys=dot,.,comma,%2C,semi,%3B",
423 "&keys=dot,.,semi,%3B,comma,%2C",
424 "&keys=semi,%3B,comma,%2C,dot,.",
425 "&keys=semi,%3B,dot,.,comma,%2C"
428 "&comma=%2C&dot=.&semi=%3B",
429 "&comma=%2C&semi=%3B&dot=.",
430 "&dot=.&comma=%2C&semi=%3B",
431 "&dot=.&semi=%3B&comma=%2C",
432 "&semi=%3B&comma=%2C&dot=.",
433 "&semi=%3B&dot=.&comma=%2C"