• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "3.2.1 Variable Expansion" :
3  {
4    "variables": {
5       "count"      : ["one", "two", "three"],
6       "dom"        : ["example", "com"],
7       "dub"        : "me/too",
8       "hello"      : "Hello World!",
9       "half"       : "50%",
10       "var"        : "value",
11       "who"        : "fred",
12       "base"       : "http://example.com/home/",
13       "path"       : "/foo/bar",
14       "list"       : ["red", "green", "blue"],
15       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
16       "v"          : "6",
17       "x"          : "1024",
18       "y"          : "768",
19       "empty"      : "",
20       "empty_keys" : [],
21       "undef"      : null
22     },
23     "testcases" : [
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"]
33      ]
34  },
35  "3.2.2 Simple String Expansion" :
36  {
37    "variables": {
38       "count"      : ["one", "two", "three"],
39       "dom"        : ["example", "com"],
40       "dub"        : "me/too",
41       "hello"      : "Hello World!",
42       "half"       : "50%",
43       "var"        : "value",
44       "who"        : "fred",
45       "base"       : "http://example.com/home/",
46       "path"       : "/foo/bar",
47       "list"       : ["red", "green", "blue"],
48       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
49       "v"          : "6",
50       "x"          : "1024",
51       "y"          : "768",
52       "empty"      : "",
53       "empty_keys" : [],
54       "undef"      : null
55     },
56     "testcases" : [
57        ["{var}", "value"],
58        ["{hello}", "Hello%20World%21"],
59        ["{half}", "50%25"],
60        ["O{empty}X", "OX"],
61        ["O{undef}X", "OX"],
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"],
67        ["{var:3}", "val"],
68        ["{var:30}", "value"],
69        ["{list}", "red,green,blue"],
70        ["{list*}", "red,green,blue"],
71        ["{keys}", [
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"
78        ]],
79        ["{keys*}", [
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"
86        ]]
87     ]
88  },
89  "3.2.3 Reserved Expansion" :
90  {
91    "variables": {
92       "count"      : ["one", "two", "three"],
93       "dom"        : ["example", "com"],
94       "dub"        : "me/too",
95       "hello"      : "Hello World!",
96       "half"       : "50%",
97       "var"        : "value",
98       "who"        : "fred",
99       "base"       : "http://example.com/home/",
100       "path"       : "/foo/bar",
101       "list"       : ["red", "green", "blue"],
102       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
103       "v"          : "6",
104       "x"          : "1024",
105       "y"          : "768",
106       "empty"      : "",
107       "empty_keys" : [],
108       "undef"      : null
109     },
110     "testcases" : [
111        ["{+var}", "value"],
112        ["{/var,empty}", "/value/"],
113        ["{/var,undef}", "/value"],
114        ["{+hello}", "Hello%20World!"],
115        ["{+half}", "50%25"],
116        ["{base}index", "http%3A%2F%2Fexample.com%2Fhome%2Findex"],
117        ["{+base}index", "http://example.com/home/index"],
118        ["O{+empty}X", "OX"],
119        ["O{+undef}X", "OX"],
120        ["{+path}/here", "/foo/bar/here"],
121        ["{+path:6}/here", "/foo/b/here"],
122        ["here?ref={+path}", "here?ref=/foo/bar"],
123        ["up{+path}{var}/here", "up/foo/barvalue/here"],
124        ["{+x,hello,y}", "1024,Hello%20World!,768"],
125        ["{+path,x}/here", "/foo/bar,1024/here"],
126        ["{+list}", "red,green,blue"],
127        ["{+list*}", "red,green,blue"],
128        ["{+keys}", [
129          "comma,,,dot,.,semi,;",
130          "comma,,,semi,;,dot,.",
131          "dot,.,comma,,,semi,;",
132          "dot,.,semi,;,comma,,",
133          "semi,;,comma,,,dot,.",
134          "semi,;,dot,.,comma,,"
135        ]],
136        ["{+keys*}", [
137          "comma=,,dot=.,semi=;",
138          "comma=,,semi=;,dot=.",
139          "dot=.,comma=,,semi=;",
140          "dot=.,semi=;,comma=,",
141          "semi=;,comma=,,dot=.",
142          "semi=;,dot=.,comma=,"
143        ]]
144     ]
145  },
146  "3.2.4 Fragment Expansion" :
147  {
148    "variables": {
149       "count"      : ["one", "two", "three"],
150       "dom"        : ["example", "com"],
151       "dub"        : "me/too",
152       "hello"      : "Hello World!",
153       "half"       : "50%",
154       "var"        : "value",
155       "who"        : "fred",
156       "base"       : "http://example.com/home/",
157       "path"       : "/foo/bar",
158       "list"       : ["red", "green", "blue"],
159       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
160       "v"          : "6",
161       "x"          : "1024",
162       "y"          : "768",
163       "empty"      : "",
164       "empty_keys" : [],
165       "undef"      : null
166     },
167     "testcases" : [
168        ["{#var}", "#value"],
169        ["{#hello}", "#Hello%20World!"],
170        ["{#half}", "#50%25"],
171        ["foo{#empty}", "foo#"],
172        ["foo{#undef}", "foo"],
173        ["{#x,hello,y}", "#1024,Hello%20World!,768"],
174        ["{#path,x}/here", "#/foo/bar,1024/here"],
175        ["{#path:6}/here", "#/foo/b/here"],
176        ["{#list}", "#red,green,blue"],
177        ["{#list*}", "#red,green,blue"],
178        ["{#keys}", [
179          "#comma,,,dot,.,semi,;",
180          "#comma,,,semi,;,dot,.",
181          "#dot,.,comma,,,semi,;",
182          "#dot,.,semi,;,comma,,",
183          "#semi,;,comma,,,dot,.",
184          "#semi,;,dot,.,comma,,"
185        ]]
186    ]
187  },
188  "3.2.5 Label Expansion with Dot-Prefix" :
189  {
190    "variables": {
191       "count"      : ["one", "two", "three"],
192       "dom"        : ["example", "com"],
193       "dub"        : "me/too",
194       "hello"      : "Hello World!",
195       "half"       : "50%",
196       "var"        : "value",
197       "who"        : "fred",
198       "base"       : "http://example.com/home/",
199       "path"       : "/foo/bar",
200       "list"       : ["red", "green", "blue"],
201       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
202       "v"          : "6",
203       "x"          : "1024",
204       "y"          : "768",
205       "empty"      : "",
206       "empty_keys" : [],
207       "undef"      : null
208    },
209    "testcases" : [
210       ["{.who}", ".fred"],
211       ["{.who,who}", ".fred.fred"],
212       ["{.half,who}", ".50%25.fred"],
213       ["www{.dom*}", "www.example.com"],
214       ["X{.var}", "X.value"],
215       ["X{.var:3}", "X.val"],
216       ["X{.empty}", "X."],
217       ["X{.undef}", "X"],
218       ["X{.list}", "X.red,green,blue"],
219       ["X{.list*}", "X.red.green.blue"],
220       ["{#keys}", [
221        "#comma,,,dot,.,semi,;",
222        "#comma,,,semi,;,dot,.",
223        "#dot,.,comma,,,semi,;",
224        "#dot,.,semi,;,comma,,",
225        "#semi,;,comma,,,dot,.",
226        "#semi,;,dot,.,comma,,"
227       ]],
228       ["{#keys*}", [
229        "#comma=,,dot=.,semi=;",
230        "#comma=,,semi=;,dot=.",
231        "#dot=.,comma=,,semi=;",
232        "#dot=.,semi=;,comma=,",
233        "#semi=;,comma=,,dot=.",
234        "#semi=;,dot=.,comma=,"
235       ]],
236       ["X{.empty_keys}", "X"],
237       ["X{.empty_keys*}", "X"]
238    ]
239  },
240  "3.2.6 Path Segment Expansion" :
241  {
242    "variables": {
243       "count"      : ["one", "two", "three"],
244       "dom"        : ["example", "com"],
245       "dub"        : "me/too",
246       "hello"      : "Hello World!",
247       "half"       : "50%",
248       "var"        : "value",
249       "who"        : "fred",
250       "base"       : "http://example.com/home/",
251       "path"       : "/foo/bar",
252       "list"       : ["red", "green", "blue"],
253       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
254       "v"          : "6",
255       "x"          : "1024",
256       "y"          : "768",
257       "empty"      : "",
258       "empty_keys" : [],
259       "undef"      : null
260     },
261     "testcases" : [
262       ["{/who}", "/fred"],
263       ["{/who,who}", "/fred/fred"],
264       ["{/half,who}", "/50%25/fred"],
265       ["{/who,dub}", "/fred/me%2Ftoo"],
266       ["{/var}", "/value"],
267       ["{/var,empty}", "/value/"],
268       ["{/var,undef}", "/value"],
269       ["{/var,x}/here", "/value/1024/here"],
270       ["{/var:1,var}", "/v/value"],
271       ["{/list}", "/red,green,blue"],
272       ["{/list*}", "/red/green/blue"],
273       ["{/list*,path:4}", "/red/green/blue/%2Ffoo"],
274       ["{/keys}", [
275        "/comma,%2C,dot,.,semi,%3B",
276        "/comma,%2C,semi,%3B,dot,.",
277        "/dot,.,comma,%2C,semi,%3B",
278        "/dot,.,semi,%3B,comma,%2C",
279        "/semi,%3B,comma,%2C,dot,.",
280        "/semi,%3B,dot,.,comma,%2C"
281       ]],
282       ["{/keys*}", [
283        "/comma=%2C/dot=./semi=%3B",
284        "/comma=%2C/semi=%3B/dot=.",
285        "/dot=./comma=%2C/semi=%3B",
286        "/dot=./semi=%3B/comma=%2C",
287        "/semi=%3B/comma=%2C/dot=.",
288        "/semi=%3B/dot=./comma=%2C"
289       ]]
290     ]
291  },
292  "3.2.7 Path-Style Parameter Expansion" :
293  {
294    "variables": {
295       "count"      : ["one", "two", "three"],
296       "dom"        : ["example", "com"],
297       "dub"        : "me/too",
298       "hello"      : "Hello World!",
299       "half"       : "50%",
300       "var"        : "value",
301       "who"        : "fred",
302       "base"       : "http://example.com/home/",
303       "path"       : "/foo/bar",
304       "list"       : ["red", "green", "blue"],
305       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
306       "v"          : "6",
307       "x"          : "1024",
308       "y"          : "768",
309       "empty"      : "",
310       "empty_keys" : [],
311       "undef"      : null
312     },
313     "testcases" : [
314        ["{;who}", ";who=fred"],
315        ["{;half}", ";half=50%25"],
316        ["{;empty}", ";empty"],
317        ["{;hello:5}", ";hello=Hello"],
318        ["{;v,empty,who}", ";v=6;empty;who=fred"],
319        ["{;v,bar,who}", ";v=6;who=fred"],
320        ["{;x,y}", ";x=1024;y=768"],
321        ["{;x,y,empty}", ";x=1024;y=768;empty"],
322        ["{;x,y,undef}", ";x=1024;y=768"],
323        ["{;list}", ";list=red,green,blue"],
324        ["{;list*}", ";list=red;list=green;list=blue"],
325        ["{;keys}", [
326          ";keys=comma,%2C,dot,.,semi,%3B",
327          ";keys=comma,%2C,semi,%3B,dot,.",
328          ";keys=dot,.,comma,%2C,semi,%3B",
329          ";keys=dot,.,semi,%3B,comma,%2C",
330          ";keys=semi,%3B,comma,%2C,dot,.",
331          ";keys=semi,%3B,dot,.,comma,%2C"
332        ]],
333        ["{;keys*}", [
334          ";comma=%2C;dot=.;semi=%3B",
335          ";comma=%2C;semi=%3B;dot=.",
336          ";dot=.;comma=%2C;semi=%3B",
337          ";dot=.;semi=%3B;comma=%2C",
338          ";semi=%3B;comma=%2C;dot=.",
339          ";semi=%3B;dot=.;comma=%2C"
340        ]]
341     ]
342  },
343  "3.2.8 Form-Style Query Expansion" :
344  {
345    "variables": {
346       "count"      : ["one", "two", "three"],
347       "dom"        : ["example", "com"],
348       "dub"        : "me/too",
349       "hello"      : "Hello World!",
350       "half"       : "50%",
351       "var"        : "value",
352       "who"        : "fred",
353       "base"       : "http://example.com/home/",
354       "path"       : "/foo/bar",
355       "list"       : ["red", "green", "blue"],
356       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
357       "v"          : "6",
358       "x"          : "1024",
359       "y"          : "768",
360       "empty"      : "",
361       "empty_keys" : [],
362       "undef"      : null
363     },
364     "testcases" : [
365        ["{?who}", "?who=fred"],
366        ["{?half}", "?half=50%25"],
367        ["{?x,y}", "?x=1024&y=768"],
368        ["{?x,y,empty}", "?x=1024&y=768&empty="],
369        ["{?x,y,undef}", "?x=1024&y=768"],
370        ["{?var:3}", "?var=val"],
371        ["{?list}", "?list=red,green,blue"],
372        ["{?list*}", "?list=red&list=green&list=blue"],
373        ["{?keys}", [
374          "?keys=comma,%2C,dot,.,semi,%3B",
375          "?keys=comma,%2C,semi,%3B,dot,.",
376          "?keys=dot,.,comma,%2C,semi,%3B",
377          "?keys=dot,.,semi,%3B,comma,%2C",
378          "?keys=semi,%3B,comma,%2C,dot,.",
379          "?keys=semi,%3B,dot,.,comma,%2C"
380        ]],
381        ["{?keys*}", [
382          "?comma=%2C&dot=.&semi=%3B",
383          "?comma=%2C&semi=%3B&dot=.",
384          "?dot=.&comma=%2C&semi=%3B",
385          "?dot=.&semi=%3B&comma=%2C",
386          "?semi=%3B&comma=%2C&dot=.",
387          "?semi=%3B&dot=.&comma=%2C"
388        ]]
389     ]
390  },
391  "3.2.9 Form-Style Query Continuation" :
392  {
393    "variables": {
394       "count"      : ["one", "two", "three"],
395       "dom"        : ["example", "com"],
396       "dub"        : "me/too",
397       "hello"      : "Hello World!",
398       "half"       : "50%",
399       "var"        : "value",
400       "who"        : "fred",
401       "base"       : "http://example.com/home/",
402       "path"       : "/foo/bar",
403       "list"       : ["red", "green", "blue"],
404       "keys"       : { "semi" : ";", "dot" : ".", "comma" : ","},
405       "v"          : "6",
406       "x"          : "1024",
407       "y"          : "768",
408       "empty"      : "",
409       "empty_keys" : [],
410       "undef"      : null
411     },
412     "testcases" : [
413          ["{&who}", "&who=fred"],
414          ["{&half}", "&half=50%25"],
415          ["?fixed=yes{&x}", "?fixed=yes&x=1024"],
416          ["{&var:3}", "&var=val"],
417          ["{&x,y,empty}", "&x=1024&y=768&empty="],
418          ["{&x,y,undef}", "&x=1024&y=768"],
419          ["{&list}", "&list=red,green,blue"],
420          ["{&list*}", "&list=red&list=green&list=blue"],
421          ["{&keys}", [
422            "&keys=comma,%2C,dot,.,semi,%3B",
423            "&keys=comma,%2C,semi,%3B,dot,.",
424            "&keys=dot,.,comma,%2C,semi,%3B",
425            "&keys=dot,.,semi,%3B,comma,%2C",
426            "&keys=semi,%3B,comma,%2C,dot,.",
427            "&keys=semi,%3B,dot,.,comma,%2C"
428          ]],
429          ["{&keys*}", [
430            "&comma=%2C&dot=.&semi=%3B",
431            "&comma=%2C&semi=%3B&dot=.",
432            "&dot=.&comma=%2C&semi=%3B",
433            "&dot=.&semi=%3B&comma=%2C",
434            "&semi=%3B&comma=%2C&dot=.",
435            "&semi=%3B&dot=.&comma=%2C"
436          ]]
437     ]
438  }
439}
440