diff --git a/spec.bs b/spec.bs index 9064fac..799800b 100644 --- a/spec.bs +++ b/spec.bs @@ -482,6 +482,8 @@ A [=constructor string parser=] has an associated group depth, a number, initially set to 0. +A [=constructor string parser=] has an associated hostname IPv6 bracket depth, a number, initially set to 0. + A [=constructor string parser=] has an associated protocol matches a special scheme flag, a boolean, initially set to false. A [=constructor string parser=] has an associated state, a string, initially set to "`init`". It must be one of the following: @@ -607,7 +609,9 @@ To parse a constructor string given a string |input|:
"`hostname`"
- 1. If the result of running [=is a port prefix=] given |parser| is true, then run [=change state=] given |parser|, "`port`", and 1. + 1. If the the result of running [=is an IPv6 open=] given |parser| is true, then increment |parser|'s [=constructor string parser/hostname IPv6 bracket depth=] by 1. + 1. Else if the the result of running [=is an IPv6 close=] given |parser| is true, then decrement |parser|'s [=constructor string parser/hostname IPv6 bracket depth=] by 1. + 1. Else if the result of running [=is a port prefix=] given |parser| is true and |parser|'s [=constructor string parser/hostname IPv6 bracket depth=] is zero, then run [=change state=] given |parser|, "`port`", and 1. 1. Else if the result of running [=is a pathname start=] given |parser| is true, then run [=change state=] given |parser|, "`pathname`", and 0. 1. Else if the result of running [=is a search prefix=] given |parser| is true, then run [=change state=] given |parser|, "`search`", and 1. 1. Else if the result of running [=is a hash prefix=] given |parser| is true, then run [=change state=] given |parser|, "`hash`", and 1. @@ -764,6 +768,18 @@ To run is a group close given a [=constructor string parser=] |parser 1. Else return false. +
+To run is an IPv6 open given a [=constructor string parser=] |parser|: + + 1. Return the result of running [=is a non-special pattern char=] given |parser|, |parser|'s [=constructor string parser/token index=], and "`[`". +
+ +
+To run is an IPv6 close given a [=constructor string parser=] |parser|: + + 1. Return the result of running [=is a non-special pattern char=] given |parser|, |parser|'s [=constructor string parser/token index=], and "`]`". +
+
To run make a component string given a [=constructor string parser=] |parser|: