diff --git a/src/http/middleware.zig b/src/http/middleware.zig index fb3095a..825f3c7 100644 --- a/src/http/middleware.zig +++ b/src/http/middleware.zig @@ -465,16 +465,7 @@ pub fn Mount(comptime route: []const u8) type { var new_ctx = ctx; new_ctx.path = args.path; - if (@hasField(@TypeOf(new_ctx), "mounted_at")) { - new_ctx.mounted_at = try std.fmt.allocPrint(ctx.allocator, "/{s}/{s}", .{ - std.mem.trim(u8, ctx.mounted_at, "/"), - std.mem.trim(u8, route, "/"), - }); - defer ctx.allocator.free(new_ctx.mounted_at); - return next.handle(req, res, new_ctx, {}); - } else { - return next.handle(req, res, addField(new_ctx, "mounted_at", std.mem.trim(u8, route, "/")), {}); - } + return next.handle(req, res, new_ctx, {}); } }; } diff --git a/src/main/controllers.zig b/src/main/controllers.zig index 98cbcf5..b34a95f 100644 --- a/src/main/controllers.zig +++ b/src/main/controllers.zig @@ -223,9 +223,6 @@ pub const Response = struct { pub fn template(self: *Self, status_code: http.Status, srv: anytype, comptime templ: []const u8, data: anytype) !void { try self.headers.put("Content-Type", "text/html"); - const user = if (srv.user_id) |uid| try srv.getUser(uid) else null; - defer util.deepFree(srv.allocator, user); - var stream = try self.open(status_code); defer stream.close(); @@ -240,7 +237,6 @@ pub const Response = struct { data, .{ .community = srv.community, - .user = user, .user_id = srv.user_id, }, ); diff --git a/src/main/controllers/web.zig b/src/main/controllers/web.zig index eed3e5f..7e5d23d 100644 --- a/src/main/controllers/web.zig +++ b/src/main/controllers/web.zig @@ -17,7 +17,6 @@ pub const routes = .{ controllers.apiEndpoint(cluster.overview), controllers.apiEndpoint(cluster.communities.create.page), controllers.apiEndpoint(cluster.communities.create.submit), - controllers.apiEndpoint(drive.details), }; const static = struct { @@ -230,29 +229,6 @@ const user_details = struct { } }; -const drive = struct { - const details = struct { - pub const path = "/drive/:path*"; - pub const method = .GET; - - pub const Args = struct { - path: []const u8, - }; - - pub const dir_tmpl = @embedFile("./web/drive/directory.tmpl.html"); - - pub fn handler(req: anytype, res: anytype, srv: anytype) !void { - const info = try srv.driveGet(req.args.path); - defer util.deepFree(srv.allocator, info); - - switch (info) { - .dir => |dir| try res.template(.ok, srv, dir_tmpl, .{ .dir = dir }), - else => unreachable, - } - } - }; -}; - const cluster = struct { const overview = struct { pub const path = "/cluster/overview"; diff --git a/src/main/controllers/web/drive/directory.tmpl.html b/src/main/controllers/web/drive/directory.tmpl.html deleted file mode 100644 index 54f2136..0000000 --- a/src/main/controllers/web/drive/directory.tmpl.html +++ /dev/null @@ -1,34 +0,0 @@ -
- - {#for .dir.children.? |$child| =} - - {#switch $child case dir |$dir| =} - - - - {#case file |$file|} - - - - - - - {/switch =} - - {/for=} -
{$dir.name.?} - {= #if %user |$u|} - {#if $u.avatar_file_id == $file.meta.id =} - - {= #elif $u.header_file_id == $file.meta.id =} - - {= /if =} - {= /if =} - - {= #if $file.meta.sensitive =} - - {= #else =} - - {= /if =} - {$file.name.?}{#if $file.meta.content_type |$t|}{$t}{/if}{$file.meta.size}{$file.meta.created_at}
-
diff --git a/src/template/lib.zig b/src/template/lib.zig index 77460bd..bfcf5d3 100644 --- a/src/template/lib.zig +++ b/src/template/lib.zig @@ -8,13 +8,11 @@ pub fn main() !void { @embedFile("./test.tmp.html"), .{ .community = .{ .name = "" }, - .foo = &[_][]const u8{ "5", "4", "3", "2", "1" }, - .baz = &[_][]const []const u8{ + .foo = [_][]const u8{ "5", "4", "3", "2", "1" }, + .baz = [_][]const []const u8{ &.{ "5", "4", "3", "2", "1" }, &.{ "5", "4", "3", "2", "1" }, }, - .start = 1, - .end = 3, .bar = .{ .x = "x" }, .qux = false, .quxx = true, @@ -238,7 +236,7 @@ fn deref(arg: anytype, comptime names: []const DerefDecl) DerefError!Deref(@Type } } -const ExpressionError = error{IndexOutOfBounds} || DerefError; +const ExpressionError = DerefError; fn EvaluateExpression( comptime expression: Expression, @@ -253,7 +251,6 @@ fn EvaluateExpression( .equals => bool, .builtin => |call| switch (call.*) { .isTag => bool, - .slice => |sl| []const std.meta.Elem(EvaluateExpression(sl.iterable, Args, Captures, Context)), }, }; } @@ -276,22 +273,13 @@ fn evaluateExpression( return std.mem.eql(u8, lhs, rhs); } else if (comptime std.meta.trait.isContainer(T) and @hasDecl(T, "eql")) { return T.eql(lhs, rhs); - } else return std.meta.eql(lhs, rhs); + } else return lhs == rhs; }, .builtin => |call| switch (call.*) { .isTag => |hdr| { const val = try evaluateExpression(hdr.expression, args, captures, context); return std.meta.isTag(val, hdr.tag); }, - .slice => |sl| { - const iterable = try evaluateExpression(sl.iterable, args, captures, context); - const start = try evaluateExpression(sl.start, args, captures, context); - const end = try evaluateExpression(sl.end, args, captures, context); - - if (comptime std.meta.trait.is(.Array)(@TypeOf(iterable))) @compileError("Cannot slice an array, pass a slice or pointer to array instead"); - if (start > iterable.len or end > iterable.len) return error.IndexOutOfBounds; - return iterable[start..end]; - }, }, }; } @@ -316,11 +304,7 @@ fn AddCapture(comptime Root: type, comptime name: []const u8, comptime Val: type fn addCapture(root: anytype, comptime name: []const u8, val: anytype) AddCapture(@TypeOf(root), name, @TypeOf(val)) { if (comptime std.mem.eql(u8, name, "_")) return root; - - var result: AddCapture(@TypeOf(root), name, @TypeOf(val)) = undefined; - inline for (std.meta.fields(@TypeOf(root))) |f| { - @field(result, f.name) = @field(root, f.name); - } + var result = std.mem.zeroInit(AddCapture(@TypeOf(root), name, @TypeOf(val)), root); @field(result, name) = val; return result; } @@ -647,7 +631,7 @@ fn parseBuiltin(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, const call = switch (builtin) { .isTag => blk: { const expr = parseExpression(iter); - iter = skipWhitespace(expr.new_iter); + iter = expr.new_iter; expectToken(iter.next(), .comma); iter = skipWhitespace(iter); const tag = iter.next(); @@ -659,26 +643,6 @@ fn parseBuiltin(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIter, }, }; }, - .slice => blk: { - const expr = parseExpression(iter); - iter = skipWhitespace(expr.new_iter); - expectToken(iter.next(), .comma); - iter = skipWhitespace(iter); - const start = parseExpression(iter); - iter = skipWhitespace(start.new_iter); - expectToken(iter.next(), .comma); - iter = skipWhitespace(iter); - const end = parseExpression(iter); - iter = skipWhitespace(end.new_iter); - - break :blk .{ - .slice = .{ - .iterable = expr.item, - .start = start.item, - .end = end.item, - }, - }; - }, }; iter = skipWhitespace(iter); expectToken(iter.next(), .close_paren); @@ -1197,7 +1161,6 @@ const EndKeyword = enum { const Builtin = enum { isTag, - slice, }; const BuiltinCall = union(Builtin) { @@ -1205,11 +1168,6 @@ const BuiltinCall = union(Builtin) { tag: []const u8, expression: Expression, }, - slice: struct { - iterable: Expression, - start: Expression, - end: Expression, - }, }; const ControlToken = union(enum) { diff --git a/src/template/test.tmp.html b/src/template/test.tmp.html index 1b484b9..995fc79 100644 --- a/src/template/test.tmp.html +++ b/src/template/test.tmp.html @@ -26,8 +26,6 @@ neither {=/if} - sliced: {#for @slice(.foo, .start, .end) |$s|}{$s}, {/for} - format: {#format "s" .x} {#switch .snap case foo =}