diff --git a/url.bs b/url.bs index 6696bd49..4fbff84d 100644 --- a/url.bs +++ b/url.bs @@ -837,6 +837,9 @@ null or a 16-bit unsigned integer that identifies a networking port. It is initi ASCII strings holding data, usually identifying a location in hierarchical form. It is initially the empty list. +
A special URL always has a +non-empty path. +
A URL's query is either null or an ASCII string holding data. It is initially null. @@ -1512,8 +1515,8 @@ string input, optionally with a base URL base, opti
If either c is "/
", or url is special and
- c is "\
", run these substeps:
+
If url is special and c is "/
" or "\
",
+ then:
If c is "\
", syntax violation.
@@ -1521,6 +1524,9 @@ string input, optionally with a base URL base, opti
Set state to special authority ignore slashes state.
Otherwise, if c is "/
", then set state to
+ authority state.
+
Otherwise, set url's username to base's username, @@ -1877,12 +1883,29 @@ string input, optionally with a base URL base, opti
If url is special and c is "\
",
- syntax violation.
+
If url is special, then: + +
If c is "\
", syntax violation.
-
Set state to path state, and if neither c is
- "/
", nor url is special and c is
- "\
", decrease pointer by one.
+
Set state to path state. + +
If c is neither "/
" nor "\
", then decrease
+ pointer by one.
+
Otherwise, if state override is not given and c is "?
",
+ then set url's query to the empty string and state to
+ query state.
+
+
Otherwise, if state override is not given and c is "#
",
+ then set url's fragment to the empty string and state to
+ fragment state.
+
+
Otherwise, if c is not EOF code point, then: set state to
+ path state and if c is not "/
", then decrease pointer by
+ one.
If url's cannot-be-a-base-URL flag is set, append the first string in url's path to output. -
Otherwise, append "/
", followed by the strings in url's
- path (including empty strings), if any, separated from each other by
- "/
", to output.
+
Otherwise, then for each string in url's path,
+ append "/
" followed by the string to output.
If url's query is non-null, append
"?
", followed by url's query, to
@@ -2692,6 +2714,9 @@ the setter to always "reset" both.
If context object's url's cannot-be-a-base-URL flag is set, then return context object's url's path[0]. +
If context object's url's path + is empty, then return the empty string. +
Return "/
", followed by the strings in context object's
url's path (including empty strings), if any, separated from each
other by "/
".