diff --git a/src/pct_enc/table.rs b/src/pct_enc/table.rs index 90553fb..c3c08b9 100644 --- a/src/pct_enc/table.rs +++ b/src/pct_enc/table.rs @@ -230,7 +230,7 @@ pub const PCHAR: Table = UNRESERVED.or(SUB_DELIMS).or(new(b":@")).or_pct_encoded pub const QUERY: Table = PCHAR.or(new(b"/?")); /// `fragment = *( pchar / "/" / "?" )` -pub const FRAGMENT: Table = QUERY; +pub const FRAGMENT: Table = QUERY.or(new(b"#")); /// `unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"` pub const UNRESERVED: Table = ALPHA.or(DIGIT).or(new(b"-._~")); diff --git a/tests/parse.rs b/tests/parse.rs index d929c86..ff87bda 100644 --- a/tests/parse.rs +++ b/tests/parse.rs @@ -237,6 +237,14 @@ fn parse_relative() { assert_eq!(r.fragment(), Some(EStr::new_or_panic("fragment"))); } +#[test] +fn parse_tolerance() { + let r = Uri::parse("term://~/code/typos-lsp//59317:/bin/zsh;#toggleterm#1").unwrap(); + assert_eq!(r.scheme().as_str(), "term"); + assert_eq!(r.path().as_str(), "/code/typos-lsp//59317:/bin/zsh;"); + assert_eq!(r.fragment().unwrap().as_str(), "toggleterm#1"); +} + use ParseErrorKind::*; #[test]