Skip to content

Commit ddd41db

Browse files
authored
Only pass strings into component compiling steps
Currently, some steps in "initialize a URLPattern" access potentially nonexistent entries in the processedInit map, and expect "compile a component" to receive these as null, even though it requires a string. Instead, these entries are now always populated after calling "process a URLPatternInit" so that subsequent steps can depend on a valid string. Since the comparison with the default port requires that the two types be the same, fix that too. Fixes #209.
1 parent 1259680 commit ddd41db

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

spec.bs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,9 @@ Each {{URLPattern}} object has an associated <dfn for=URLPattern>hash component<
360360
1. If |baseURL| is not null, then throw a {{TypeError}}.
361361
1. Set |init| to |input|.
362362
1. Let |processedInit| be the result of [=process a URLPatternInit=] given |init|, "`pattern`", null, null, null, null, null, null, null, and null.
363-
1. If |processedInit|["{{URLPatternInit/protocol}}"] is a [=special scheme=] and |processedInit|["{{URLPatternInit/port}}"] is its corresponding [=default port=], then set |processedInit|["{{URLPatternInit/port}}"] to the empty string.
363+
1. [=list/For each=] |componentName| of « "{{URLPatternInit/protocol}}", "{{URLPatternInit/username}}", "{{URLPatternInit/password}}", "{{URLPatternInit/hostname}}", "{{URLPatternInit/port}}", "{{URLPatternInit/pathname}}", "{{URLPatternInit/search}}", "{{URLPatternInit/hash}}" »:
364+
1. If |processedInit|[|componentName|] does not [=map/exist=], then [=map/set=] |processedInit|[|componentName|] to "`*`".
365+
1. If |processedInit|["{{URLPatternInit/protocol}}"] is a [=special scheme=] and |processedInit|["{{URLPatternInit/port}}"] is a string which represents its corresponding [=default port=] in radix-10 using [=ASCII digits=] then set |processedInit|["{{URLPatternInit/port}}"] to the empty string.
364366
1. Set |this|'s [=URLPattern/protocol component=] to the result of [=compiling a component=] given |processedInit|["{{URLPatternInit/protocol}}"], [=canonicalize a protocol=], and [=default options=].
365367
1. Set |this|'s [=URLPattern/username component=] to the result of [=compiling a component=] given |processedInit|["{{URLPatternInit/username}}"], [=canonicalize a username=], and [=default options=].
366368
1. Set |this|'s [=URLPattern/password component=] to the result of [=compiling a component=] given |processedInit|["{{URLPatternInit/password}}"], [=canonicalize a password=], and [=default options=].
@@ -460,7 +462,6 @@ A [=component=] has an associated <dfn for=component>has regexp groups</dfn>, a
460462
<div algorithm>
461463
To <dfn>compile a component</dfn> given a string |input|, [=/encoding callback=] |encoding callback|, and [=/options=] |options|:
462464

463-
1. If |input| is null, then set |input| to "`*`".
464465
1. Let |part list| be the result of running [=parse a pattern string=] given |input|, |options|, and |encoding callback|.
465466
1. Let (|regular expression string|, |name list|) be the result of running [=generate a regular expression and name list=] given |part list| and |options|.
466467
1. Let |flags| be an empty string.

0 commit comments

Comments
 (0)