diff --git a/src/astgen.zig b/src/astgen.zig index bbb5e107ef86c6d3d638d8774481bd315ba75145..884c3077a7b54c5d3db4ac55891da5c732c396f4 100644 --- a/src/astgen.zig +++ b/src/astgen.zig @@ -51,6 +51,7 @@ pub const Body = []const Value; pub const Fn = struct { name: string, + raw: bool, args: []const []const string, }; @@ -145,6 +146,7 @@ const Parser = struct { } if (self.tryEatSymbol("{")) { if (self.tryEatSymbol("#")) { + const fraw = self.tryEatSymbol("#"); const w = self.eat(.word); if (std.meta.stringToEnum(Block.Type, w)) |name| { const args = self.doArgs(); @@ -174,6 +176,7 @@ const Parser = struct { } return Value{ .function = .{ .name = w, + .raw = fraw, .args = self.doArgs(), } }; } diff --git a/src/lib.zig b/src/lib.zig index 8a707b25d76f2cb53aea1d28babe14541009aabf..8b6f66cfde9d77ee37df6fcd9edd4fe5b34ce89b 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -171,7 +171,7 @@ inline fn do(comptime Ctx: type, alloc: std.mem.Allocator, writer: anytype, comp const field_name = comptime std.fmt.comptimePrint("{d}", .{i + 2}); @field(args, field_name) = if (comptime std.mem.eql(u8, arg[0], "this")) search(arg[1..], data) else search(arg, ctx); } - const repvalue = astgen.Value{ .replacement = .{ .arms = &.{"this"} } }; + const repvalue = astgen.Value{ .replacement = .{ .arms = &.{"this"}, .raw = v.raw } }; try @call(.auto, func, args); try do(Ctx, alloc, writer, repvalue, try list.toOwnedSlice(), ctx, indent, flag1); return;