UNPKG

14.4 kBJSONView Raw
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}