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| =}
- |
- |
- {$dir.name.?} |
- {#case file |$file|}
-
- {= #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} |
- {/switch =}
-
- {/for=}
-
-
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 =}