aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/Component.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/Component.zig')
-rw-r--r--src/frontend/Component.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/frontend/Component.zig b/src/frontend/Component.zig
new file mode 100644
index 0000000..d90ed3b
--- /dev/null
+++ b/src/frontend/Component.zig
@@ -0,0 +1,30 @@
+const std = @import("std");
+
+const File = @import("File.zig");
+
+const Self = @This();
+
+name: []const u8,
+parent_dir: []const u8,
+
+pub fn path(p: []const u8) Self {
+ const name = p[if (std.mem.lastIndexOfScalar(
+ u8,
+ std.mem.trim(u8, p, "/"),
+ '/',
+ )) |index| index + 1 else 0..];
+
+ return .{
+ .name = name,
+ .parent_dir = p,
+ };
+}
+
+pub fn to_html_string(comptime self: Self) []const u8 {
+ const html: File.Html = .minify(self.parent_dir ++ "/index.html");
+ const js: File.Script = .minify(self.parent_dir ++ "/index.js");
+ const css: File.Style = .minify(self.parent_dir ++ "/index.css");
+ return "<template id=\"--" ++ self.name ++ "\">" ++ css.to_html_string() ++ html.to_html_string() ++ js.to_html_string() ++ "</template>";
+}
+
+test {}