diff --git a/src/constructor_parser.rs b/src/constructor_parser.rs index dfb6bf0..4dbf754 100644 --- a/src/constructor_parser.rs +++ b/src/constructor_parser.rs @@ -230,11 +230,13 @@ impl<'a> ConstructorStringParser<'a> { assert!(self.token_index < self.token_list.len()); let token = &self.token_list[self.token_index]; let component_start_index = self.get_safe_token(self.component_start).index; + self .input - .get(component_start_index..token.index) // TODO: check & codepoint - .unwrap() - .to_string() + .chars() + .skip(component_start_index) + .take(token.index - component_start_index) + .collect() } // Ref: https://wicg.github.io/urlpattern/#rewind-and-set-state diff --git a/src/lib.rs b/src/lib.rs index 1752598..7e54d47 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -954,6 +954,15 @@ mod tests { .unwrap(); } + #[test] + fn issue46() { + quirks::process_construct_pattern_input( + quirks::StringOrInit::String(":café://:foo".to_owned()), + None, + ) + .unwrap(); + } + #[test] fn has_regexp_group() { let pattern = ::parse(UrlPatternInit {