diff --git a/src/core/util.ml b/src/core/util.ml index 8a2b861d..78845fa9 100644 --- a/src/core/util.ml +++ b/src/core/util.ml @@ -76,6 +76,11 @@ let split_on_slash s : _ list = List.rev !l let parse_query s : (_ list, string) result = + let s = + match String.index_opt s '#' with + | Some i -> String.sub s (i + 1) (String.length s - i - 1) + | None -> s + in let pairs = ref [] in let is_sep_ = function | '&' | ';' -> true diff --git a/tests/unit/t_util.ml b/tests/unit/t_util.ml index 7f9eac7f..db3c6758 100644 --- a/tests/unit/t_util.ml +++ b/tests/unit/t_util.ml @@ -30,6 +30,8 @@ let () = assert_eq [] (U.split_on_slash "//") let () = assert_eq ~cmp:eq_sorted (Ok [ "a", "b"; "c", "d" ]) (U.parse_query "a=b&c=d") +let () = assert_eq (Ok [ "foo", "bar" ]) (U.parse_query "yolo#foo=bar") + let () = add_qcheck @@ QCheck.Test.make ~long_factor:20 ~count:1_000