diff --git a/src/url.zig b/src/url.zig index a38bfcf..a767dec 100644 --- a/src/url.zig +++ b/src/url.zig @@ -67,6 +67,7 @@ pub fn parseUrl(self: *URL, text: []const u8) ParseError!*URL { if ((reader.peek() orelse 0) == '?') { // query part std.debug.assert(reader.get().? == '?'); self.query = reader.readUntil(isQuerySeparator); + self.querymap = parseQuery(self.query.?); } if ((reader.peek() orelse 0) == '#') { // fragment part diff --git a/src/url_test.zig b/src/url_test.zig index f92fa3c..a68e3c3 100644 --- a/src/url_test.zig +++ b/src/url_test.zig @@ -81,6 +81,10 @@ test "RFC example 1" { var url = URL.init(.{}); const result = url.parseUrl(text) catch return; try testing.expectEqualStrings("/over/there", result.path); - try testing.expectEqualStrings("name=ferret", result.query.?); + try testing.expectEqualStrings("name=ferret", @constCast(result.query.?)); try testing.expectEqualStrings("nose", result.fragment.?); + + var qm = url.querymap.?; + defer qm.deinit(); + try testing.expectEqualStrings("ferret", qm.get("name").?); }