mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 23:24:09 +00:00

According to the facil.io docs (http://facil.io/0.7.x/fiobj_mustache#fiobj_mustache_new): > By setting the filename argument even when the data argument exists, > it will allow path resolution for partial templates. Otherwise, there > is no way to know where to find the partial templates. This will allow partial templates to work. However, this also introduces a breaking change to the existing MustacheNew function. This change makes it mirror the C version where it accepts a MustacheLoadArgs struct instead of just the data. That's also a handy method to have, so I renamed that to MustacheData...maybe there's a better name?
44 lines
1.1 KiB
Zig
44 lines
1.1 KiB
Zig
const std = @import("std");
|
|
const zap = @import("zap");
|
|
|
|
const User = struct {
|
|
name: []const u8,
|
|
id: isize,
|
|
};
|
|
|
|
const data = .{
|
|
.users = [_]User{
|
|
.{
|
|
.name = "Rene",
|
|
.id = 1,
|
|
},
|
|
.{
|
|
.name = "Caro",
|
|
.id = 6,
|
|
},
|
|
},
|
|
.nested = .{
|
|
.item = "nesting works",
|
|
},
|
|
};
|
|
|
|
test "MustacheData" {
|
|
const template = "{{=<< >>=}}* Users:\n<<#users>><<id>>. <<& name>> (<<name>>)\n<</users>>\nNested: <<& nested.item >>.";
|
|
const p = try zap.MustacheData(template);
|
|
defer zap.MustacheFree(p);
|
|
|
|
const ret = zap.MustacheBuild(p, data);
|
|
defer ret.deinit();
|
|
|
|
try std.testing.expectEqualSlices(u8, "* Users:\n1. Rene (Rene)\n6. Caro (Caro)\nNested: nesting works.", ret.str().?);
|
|
}
|
|
|
|
test "MustacheLoad" {
|
|
const p = try zap.MustacheLoad("./src/tests/testtemplate.html");
|
|
defer zap.MustacheFree(p);
|
|
|
|
const ret = zap.MustacheBuild(p, data);
|
|
defer ret.deinit();
|
|
|
|
try std.testing.expectEqualSlices(u8, "* Users:\n1. Rene (Rene)\n6. Caro (Caro)\nNested: nesting works.\n", ret.str().?);
|
|
}
|