zdt-prov/src/main.zig
2026-01-14 14:09:09 -03:00

80 lines
2.1 KiB
Zig

const std = @import("std");
const zdt_prov = @import("zdt_prov");
const Context = @import("context.zig").Context;
const Renderer = @import("renderer.zig").Renderer;
const parser = @import("parser.zig");
const TemplateCache = @import("cache.zig").TemplateCache;
pub fn main() !void {
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
const alloc = arena.allocator();
// const base =
// \\<html>
// \\<head><title>{% block title %}Título Padrão{% endblock %}</title></head>
// \\<body>
// \\{% block content %}Conteúdo padrão{% endblock %}
// \\</body>
// \\</html>
// ;
//
// const child =
// \\{% extends "base.html" %}
// \\{% block title %}Meu Título{% endblock %}
// \\{% block content %}
// \\Olá {{ nome }}!
// \\{% endblock %}
// ;
//
// try std.fs.cwd().writeFile(.{
// .sub_path = "base.html",
// .data = base,
// });
// try std.fs.cwd().writeFile(.{
// .sub_path = "child.html",
// .data = child,
// });
// defer std.fs.cwd().deleteFile("base.html") catch {};
// defer std.fs.cwd().deleteFile("child.html") catch {};
const User =struct {
name: []const u8,
email: []const u8,
notifications: i64 = 0
};
var ctx = Context.init(alloc);
defer ctx.deinit();
var cache = TemplateCache.init(alloc);
defer cache.deinit();
const renderer = Renderer.init(&ctx, &cache);
const user = User{
.name = "Lucas",
.email = "lucas@email",
.notifications = 5
};
const itens = [3][]const u8{"Livro", "Caneta", "Caderno"};
try ctx.set("nome", "Lucas");
try ctx.set("user", user);
try ctx.set("msg", "Bazinga!");
try ctx.set("itens", itens);
for(ctx.get("itens").?.list) |item| {
std.debug.print(" - {s}\n", .{item.string});
}
var buffer = std.ArrayList(u8){};
defer buffer.deinit(ctx.allocator());
try renderer.render("home.html", buffer.writer(ctx.allocator()));
const output = buffer.items;
std.debug.print("{s}\n", .{output});
}