From 6983a8c038510a758e99d851cf068b06882bee5a Mon Sep 17 00:00:00 2001 From: Yoshisato Yanagisawa Date: Wed, 28 Feb 2024 06:28:46 +0000 Subject: [PATCH] Addressed comments. - Not chagne `exec()` or `test()` arguments. - make the match algorithm accept [=/url=]. - By merging existing steps, omitted the explicit declaration of anchors. --- spec.bs | 49 +++++++++++++++---------------------------------- 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/spec.bs b/spec.bs index 99fbd1b..b04b7c6 100644 --- a/spec.bs +++ b/spec.bs @@ -11,7 +11,6 @@ Markup Shorthands: markdown yes
@@ -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
 

URL patterns

@@ -181,16 +171,15 @@ It can be constructed using a string for each component, or from a shorthand str 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; @@ -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. @@ -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}}"]. @@ -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=].