Skip to content

Commit 0438883

Browse files
committed
refactor: include z char properly in range
1 parent 889dc56 commit 0438883

File tree

4 files changed

+18
-19
lines changed

4 files changed

+18
-19
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ path-segment = 1*( path-literal / template-expression )
246246
slash = "/"
247247
path-literal = 1*pchar
248248
template-expression = "{" template-expression-param-name "}"
249-
template-expression-param-name = 1*( %x00-79 / %x7C / %x7E-10FFFF / "z" ) ; every UTF8 character except { and } (from OpenAPI)
249+
template-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)
250250
251251
; Characters definitions (from RFC 3986)
252252
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

src/path-templating.bnf

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ path-segment = 1*( path-literal / template-expression )
44
slash = "/"
55
path-literal = 1*pchar
66
template-expression = "{" template-expression-param-name "}"
7-
template-expression-param-name = 1*( %x00-79 / %x7C / %x7E-10FFFF / "z" ) ; every UTF8 character except { and } (from OpenAPI)
7+
template-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)
88

99
; Characters definitions (from RFC 3986)
1010
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

src/path-templating.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ export default function grammar(){
77
// SUMMARY
88
// rules = 13
99
// udts = 0
10-
// opcodes = 66
10+
// opcodes = 65
1111
// --- ABNF original opcodes
1212
// ALT = 7
1313
// CAT = 4
1414
// REP = 5
1515
// RNM = 16
16-
// TLS = 28
16+
// TLS = 27
1717
// TBS = 1
1818
// TRG = 5
1919
// --- SABNF superset opcodes
@@ -82,11 +82,10 @@ export default function grammar(){
8282
/* template-expression-param-name */
8383
this.rules[5].opcodes = [];
8484
this.rules[5].opcodes[0] = { type: 3, min: 1, max: Infinity };// REP
85-
this.rules[5].opcodes[1] = { type: 1, children: [2,3,4,5] };// ALT
86-
this.rules[5].opcodes[2] = { type: 5, min: 0, max: 121 };// TRG
85+
this.rules[5].opcodes[1] = { type: 1, children: [2,3,4] };// ALT
86+
this.rules[5].opcodes[2] = { type: 5, min: 0, max: 122 };// TRG
8787
this.rules[5].opcodes[3] = { type: 6, string: [124] };// TBS
8888
this.rules[5].opcodes[4] = { type: 5, min: 126, max: 1114111 };// TRG
89-
this.rules[5].opcodes[5] = { type: 7, string: [122] };// TLS
9089

9190
/* pchar */
9291
this.rules[6].opcodes = [];
@@ -159,7 +158,7 @@ export default function grammar(){
159158
str += "slash = \"/\"\n";
160159
str += "path-literal = 1*pchar\n";
161160
str += "template-expression = \"{\" template-expression-param-name \"}\"\n";
162-
str += "template-expression-param-name = 1*( %x00-79 / %x7C / %x7E-10FFFF / \"z\" ) ; every UTF8 character except { and } (from OpenAPI)\n";
161+
str += "template-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\n";
163162
str += "\n";
164163
str += "; Characters definitions (from RFC 3986)\n";
165164
str += "pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n";

test/test.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ describe('test', function () {
3030
assert.isTrue(test('/{❤️}'));
3131
assert.isTrue(test('/{%}'));
3232
assert.isTrue(test('/{foo:}'));
33-
assert.isTrue(test('/{foo:bar}'));
34-
assert.isTrue(test('/{=bar}'));
35-
assert.isTrue(test('/{$bar}'));
36-
assert.isTrue(test('/{~bar}'));
37-
assert.isTrue(test('/{#bar}'));
38-
assert.isTrue(test('/{?bar}'));
39-
assert.isTrue(test('/{/bar}'));
40-
assert.isTrue(test('/{foo bar}'));
41-
assert.isTrue(test('/{|bar}'));
42-
assert.isTrue(test('/{^bar}'));
43-
assert.isTrue(test('/{`bar}'));
33+
assert.isTrue(test('/{foo:baz}'));
34+
assert.isTrue(test('/{=baz}'));
35+
assert.isTrue(test('/{$baz}'));
36+
assert.isTrue(test('/{~baz}'));
37+
assert.isTrue(test('/{#baz}'));
38+
assert.isTrue(test('/{?baz}'));
39+
assert.isTrue(test('/{/baz}'));
40+
assert.isTrue(test('/{foo baz}'));
41+
assert.isTrue(test('/{|baz}'));
42+
assert.isTrue(test('/{^baz}'));
43+
assert.isTrue(test('/{`baz}'));
4444
// RFC 6570 operators are allowed
4545
assert.isTrue(test('/{y,x}'), '/{y,x}');
4646
assert.isTrue(test('/{count*}'));

0 commit comments

Comments
 (0)