diff --git a/build.zig b/build.zig index 3271cf016af8a1023a18d9e377fc6e89dee60990..2cb1cff60b0d8d40a047f0b781fc3671eabcb173 100644 --- a/build.zig +++ b/build.zig @@ -3,13 +3,15 @@ const deps = @import("./deps.zig"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); - const mode = b.option(std.builtin.Mode, "mode", "") orelse .Debug; + const mode = b.option(std.builtin.OptimizeMode, "mode", "") orelse .Debug; const disable_llvm = b.option(bool, "disable_llvm", "use the non-llvm zig codegen") orelse false; const tests = b.addTest(.{ - .root_source_file = b.path("test.zig"), - .target = target, - .optimize = mode, + .root_module = b.createModule(.{ + .root_source_file = b.path("test.zig"), + .target = target, + .optimize = mode, + }), }); deps.addAllTo(tests); tests.use_llvm = !disable_llvm; diff --git a/licenses.txt b/licenses.txt index 88e27f0a4245ff62b48e537f58d25778898b6246..41582c7efbb0924dec0cf50e7ccedecf558fc03d 100644 --- a/licenses.txt +++ b/licenses.txt @@ -8,11 +8,11 @@ MIT: = https://spdx.org/licenses/MIT - git https://github.com/nektro/zig-expect - git https://github.com/nektro/zig-extras +- git https://github.com/nektro/zig-htmlentities - git https://github.com/nektro/zig-sys-darwin - git https://github.com/nektro/zig-sys-linux - git https://github.com/nektro/zig-time - git https://github.com/nektro/zig-tracer -- git https://github.com/kivikakk/htmlentities.zig Unspecified: - system_lib c diff --git a/test.zig b/test.zig index b10cad68cd0d2139237833223dc32fdf0bde3d81..eb320136530fd9dfd32544ba83c572540e0d30f3 100644 --- a/test.zig +++ b/test.zig @@ -2,6 +2,7 @@ const std = @import("std"); const pek = @import("pek"); const expect = @import("expect").expect; const extras = @import("extras"); +const nio = @import("nio"); test { std.testing.refAllDeclsRecursive(pek); @@ -9,7 +10,7 @@ test { test "document" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\html[lang="en"]( @@ -28,7 +29,7 @@ test "document" { try pek.compile( @This(), alloc, - builder.writer(), + &builder, doc, .{}, ); @@ -52,7 +53,7 @@ test "document" { test "apostrophe attribute string" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\html[lang="en"]( @@ -67,7 +68,7 @@ test "apostrophe attribute string" { try pek.compile( @This(), alloc, - builder.writer(), + &builder, doc, .{}, ); @@ -87,7 +88,7 @@ test "apostrophe attribute string" { test "fragment" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -98,7 +99,7 @@ test "fragment" { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{}, @@ -115,7 +116,7 @@ test "fragment" { test "if: basic" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -131,7 +132,7 @@ test "if: basic" { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .foo = false, .bar = true }, @@ -148,7 +149,7 @@ test "if: basic" { test "if: optional" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const foo: ?u8 = null; const bar: ?u8 = 24; @@ -166,7 +167,7 @@ test "if: optional" { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .foo = foo, .bar = bar }, @@ -184,7 +185,7 @@ test "if: optional" { // if else test "if else + field access" { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -197,7 +198,7 @@ test "if else + field access" { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = .{ .qux = false } }, @@ -213,7 +214,7 @@ test "if else + field access" { // ifnot test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -226,7 +227,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = true }, @@ -240,7 +241,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -253,7 +254,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = false }, @@ -268,7 +269,7 @@ test { // ifnot optional test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const foo: ?u8 = null; const doc = comptime pek.parse( @@ -282,7 +283,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .foo = foo }, @@ -298,7 +299,7 @@ test { // ifequal test { // bool const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -311,7 +312,7 @@ test { // bool ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = true }, @@ -325,7 +326,7 @@ test { // bool } test { // bool false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -338,7 +339,7 @@ test { // bool false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = false }, @@ -352,7 +353,7 @@ test { // bool false } test { // string const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -365,7 +366,7 @@ test { // string ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as([]const u8, "foo") }, @@ -379,7 +380,7 @@ test { // string } test { // string false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -392,7 +393,7 @@ test { // string false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as([]const u8, "qux") }, @@ -406,7 +407,7 @@ test { // string false } test { // enum const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -419,7 +420,7 @@ test { // enum ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as(enum { foo, bar, qux }, .foo) }, @@ -433,7 +434,7 @@ test { // enum } test { // enum false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -446,7 +447,7 @@ test { // enum false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as(enum { foo, bar, qux }, .qux) }, @@ -462,7 +463,7 @@ test { // enum false // ifnotequal test { // bool const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -475,7 +476,7 @@ test { // bool ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = false }, @@ -489,7 +490,7 @@ test { // bool } test { // bool false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -502,7 +503,7 @@ test { // bool false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = true }, @@ -516,7 +517,7 @@ test { // bool false } test { // string const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -529,7 +530,7 @@ test { // string ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as([]const u8, "qux") }, @@ -543,7 +544,7 @@ test { // string } test { // string false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -556,7 +557,7 @@ test { // string false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as([]const u8, "foo") }, @@ -570,7 +571,7 @@ test { // string false } test { // enum const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -583,7 +584,7 @@ test { // enum ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as(enum { foo, bar, qux }, .qux) }, @@ -597,7 +598,7 @@ test { // enum } test { // enum false const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -610,7 +611,7 @@ test { // enum false ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .bar = @as(enum { foo, bar, qux }, .foo) }, @@ -626,7 +627,7 @@ test { // enum false // replacement test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -635,7 +636,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .text = @as([]const u8, "dynamic") }, @@ -649,7 +650,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -658,7 +659,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .url = @as([]const u8, "https://github.com/nektro/zig-pek") }, @@ -672,7 +673,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -681,7 +682,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .host = @as([]const u8, "github.com") }, @@ -695,7 +696,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -704,7 +705,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .host = "github.com".* }, @@ -718,7 +719,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const S = struct { x: []const u8, y: u32 }; const text: S = .{ .x = "dynamic", .y = 47 }; @@ -729,7 +730,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .text = &text }, @@ -753,7 +754,7 @@ test { } }; const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -762,7 +763,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .host = S{ .name = "github" } }, @@ -778,7 +779,7 @@ test { // raw replacement test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -787,7 +788,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .url = "https://github.com/nektro/zig-pek".* }, @@ -801,7 +802,7 @@ test { } test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const doc = comptime pek.parse( \\body( @@ -810,7 +811,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .foo = "contain HTML such as as an escape hatch when you know content is safe".* }, @@ -844,7 +845,7 @@ test { var arena = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena.deinit(); const alloc = arena.allocator(); - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); var person: struct { name: []const u8 } = .{ .name = "meghan" }; _ = &person; @@ -858,7 +859,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = C, .indent = 0, .doindent = true, .doindent2 = true }, .{ .prev = person }, @@ -891,7 +892,7 @@ test { var arena = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena.deinit(); const alloc = arena.allocator(); - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); var person: S = .{ .id = 0 }; _ = &person; @@ -906,7 +907,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = C, .indent = 0, .doindent = true, .doindent2 = true }, .{ .user = person }, @@ -931,7 +932,7 @@ test { var arena = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena.deinit(); const alloc = arena.allocator(); - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); var person: S = .{ .id = 25 }; _ = &person; @@ -946,7 +947,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = C, .indent = 0, .doindent = true, .doindent2 = true }, .{ .user = person }, @@ -962,7 +963,7 @@ test { // each test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const S = struct { abbr: []const u8, @@ -983,7 +984,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .states = &states }, @@ -1001,7 +1002,7 @@ test { // multi-each test { const alloc = std.testing.allocator; - var builder = std.ArrayList(u8).init(alloc); + var builder = nio.AllocatingWriter.init(alloc); defer builder.deinit(); const S = struct { abbr: []const u8, @@ -1022,7 +1023,7 @@ test { ); try pek.compileInner( alloc, - builder.writer(), + &builder, doc, .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, .{ .abbrs = states.items.abbr, .names = states.items.name }, diff --git a/zig.mod b/zig.mod index d3bb2dc27079394889db868281bda144712a2efd..b47444e85745c744a9e112976594f1cd8b078174 100644 --- a/zig.mod +++ b/zig.mod @@ -4,7 +4,7 @@ main: src/lib.zig license: MPL-2.0 description: An HTML preprocessor with a builtin template engine. dependencies: - - src: git https://github.com/kivikakk/htmlentities.zig commit-bd5d569a245c7c8e83812eadcb5761b7ba76ef04 + - src: git https://github.com/nektro/zig-htmlentities - src: git https://github.com/nektro/zig-extras - src: git https://github.com/nektro/zig-tracer - src: git https://github.com/nektro/zig-nio @@ -12,3 +12,4 @@ dependencies: root_dependencies: - src: git https://github.com/nektro/zig-expect - src: git https://github.com/nektro/zig-extras + - src: git https://github.com/nektro/zig-nio