Skip to content

Commit

Permalink
Addressed comments.
Browse files Browse the repository at this point in the history
- Not chagne `exec()` or `test()` arguments.
- make the match algorithm accept [=/url=].
- By merging existing steps, omitted the explicit declaration of
  anchors.
  • Loading branch information
yoshisatoyanagisawa committed Feb 28, 2024
1 parent 9aa8046 commit 6983a8c
Showing 1 changed file with 15 additions and 34 deletions.
49 changes: 15 additions & 34 deletions spec.bs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Markup Shorthands: markdown yes
<pre class="link-defaults">
spec:infra; type:dfn; text:list
spec:webidl; type:dfn; text:record
spec:url; type:interface; text:URL
</pre>

<pre class="anchors">
Expand All @@ -22,15 +21,6 @@ spec: ECMASCRIPT; urlPrefix: https://tc39.es/ecma262/
spec: URL; urlPrefix: https://url.spec.whatwg.org/
type: dfn
text: serialize an integer; url: #serialize-an-integer
text: url; url: #concept-url
text: scheme; for: url; url: #concept-url-scheme
text: username; for: url; url: #concept-url-username
text: password; for: url; url: #concept-url-password
text: host; for: url; url: #concept-url-host
text: port; for: url; url: #concept-url-port
text: path; for: url; url: #concept-url-path
text: query; for: url; url: #concept-url-query
text: fragment; for: url; url: #concept-url-fragment
</pre>

<h2 id=urlpatterns>URL patterns</h2>
Expand Down Expand Up @@ -181,16 +171,15 @@ It can be constructed using a string for each component, or from a shorthand str

<xmp class="idl">
typedef (USVString or URLPatternInit) URLPatternInput;
typedef (URLPatternInput or URL) URLPatternMatchInput;

[Exposed=(Window,Worker)]
interface URLPattern {
constructor(URLPatternInput input, USVString baseURL, optional URLPatternOptions options = {});
constructor(optional URLPatternInput input = {}, optional URLPatternOptions options = {});

boolean test(optional URLPatternMatchInput input = {}, optional USVString baseURL);
boolean test(optional URLPatternInput input = {}, optional USVString baseURL);

URLPatternResult? exec(optional URLPatternMatchInput input = {}, optional USVString baseURL);
URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL);

readonly attribute USVString protocol;
readonly attribute USVString username;
Expand Down Expand Up @@ -479,7 +468,7 @@ A <dfn>component</dfn> is a [=struct=] with the following [=struct/items=]:
</div>

<div algorithm>
To perform a <dfn export for="URL pattern">match</dfn> given a [=URL pattern=] |urlPattern|, a {{URLPatternMatchInput}} |input|, and an optional string |baseURLString|:
To perform a <dfn export for="URL pattern">match</dfn> given a [=URL pattern=] |urlPattern|, a {{URLPatternInput}} or [=/url=] |input|, and an optional string |baseURLString|:

1. Let |protocol| be the empty string.
1. Let |username| be the empty string.
Expand All @@ -491,17 +480,7 @@ A <dfn>component</dfn> is a [=struct=] with the following [=struct/items=]:
1. Let |hash| be the empty string.
1. Let |inputs| be an empty [=list=].
1. [=list/Append=] |input| to |inputs|.
1. If |input| is a {{URL}} then:
1. Let |associatedUrl| be |input|'s associated [=URL=].
1. Set |protocol| to |associatedUrl|'s [=url/scheme=].
1. Set |username| to |associatedUrl|'s [=url/username=].
1. Set |password| to |associatedUrl|'s [=url/password=].
1. Set |hostname| to |associatedUrl|'s [=url/host=].
1. Set |port| to |associatedUrl|'s [=url/port=].
1. Set |pathname| to |associatedUrl|'s [=url/path=].
1. Set |search| to |associatedUrl|'s [=url/query=].
1. Set |hash| to |associatedUrl|'s [=url/fragment=].
1. Else if |input| is a {{URLPatternInit}} then:
1. If |input| is a {{URLPatternInit}} then:
1. If |baseURLString| was given, throw a {{TypeError}}.
1. Let |applyResult| be the result of [=process a URLPatternInit=] given |input|, "url", |protocol|, |username|, |password|, |hostname|, |port|, |pathname|, |search|, and |hash|. If this throws an exception, catch it, and return null.
1. Set |protocol| to |applyResult|["{{URLPatternInit/protocol}}"].
Expand All @@ -512,15 +491,17 @@ A <dfn>component</dfn> is a [=struct=] with the following [=struct/items=]:
1. Set |pathname| to |applyResult|["{{URLPatternInit/pathname}}"].
1. Set |search| to |applyResult|["{{URLPatternInit/search}}"].
1. Set |hash| to |applyResult|["{{URLPatternInit/hash}}"].
1. Else:
1. [=Assert=]: |input| is a {{USVString}}.
1. Let |baseURL| be null.
1. If |baseURLString| was given, then:
1. Set |baseURL| to the result of [=URL parser|parsing=] |baseURLString|.
1. If |baseURL| is failure, return null.
1. [=list/Append=] |baseURLString| to |inputs|.
1. Let |url| be the result of [=URL parser|parsing=] |input| given |baseURL|.
1. If |url| is failure, return null.
1. Otherwise:
1. Let |url| be |input|.
1. If |input| is a {{USVString}}:
1. Let |baseURL| be null.
1. If |baseURLString| was given, then:
1. Set |baseURL| to the result of [=URL parser|parsing=] |baseURLString|.
1. If |baseURL| is failure, return null.
1. [=list/Append=] |baseURLString| to |inputs|.
1. Let |url| be the result of [=URL parser|parsing=] |input| given |baseURL|.
1. If |url| is failure, return null.
1. [=Assert=]: |url| is [=/url=]
1. Set |protocol| to |url|'s [=url/scheme=].
1. Set |username| to |url|'s [=url/username=].
1. Set |password| to |url|'s [=url/password=].
Expand Down

0 comments on commit 6983a8c

Please sign in to comment.