diff options
Diffstat (limited to 'src/http/Url.zig')
| -rw-r--r-- | src/http/Url.zig | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/src/http/Url.zig b/src/http/Url.zig deleted file mode 100644 index 4a0a2b0..0000000 --- a/src/http/Url.zig +++ /dev/null @@ -1,39 +0,0 @@ -const std = @import("std"); - -const Segment = union(enum) { - literal: []const u8, - parameter: []const u8, - - pub fn format(self: @This(), writer: *std.Io.Writer) !void { - try writer.print("{s}{{ {s} }}", .{ @tagName(self), switch (self) { - inline else => |s| s, - } }); - } -}; - -pub fn Template(comptime template: []const u8) []const Segment { - var segments: []const Segment = &.{}; - var t = template; - - if (template.len == 0 or template[0] != '/') { - @compileError("template needs to be absolute"); - } - - while (t.len > 0) { - const index = std.mem.indexOfScalar(u8, t, '/'); - const segment = t[0 .. index orelse t.len]; - t = t[(index orelse t.len - 1) + 1 ..]; - - if (segment.len > 0) { - const s: []const Segment = &.{seg: { - if (segment[0] == '{' and segment[segment.len - 1] == '}') { - break :seg .{ .parameter = segment[1 .. segment.len - 1] }; - } else { - break :seg .{ .literal = segment }; - } - }}; - segments = segments ++ s; - } - } - return segments; -} |