const std = @import("std"); const Node = @import("Parser.zig").Node; const Config = @This(); const Allocator = std.mem.Allocator; const Writer = std.Io.Writer; pub const Fn = *const fn (*Writer, Node) anyerror![]const u8; root: Fn = Default.root, block: Fn = Default.block, link: Fn = Default.link, image: Fn = Default.image, h1: Fn = Default.h1, h2: Fn = Default.h2, h3: Fn = Default.h3, h4: Fn = Default.h4, h5: Fn = Default.h5, h6: Fn = Default.h6, bold: Fn = Default.bold, italic: Fn = Default.italic, unordered_list: Fn = Default.unorderedList, ordered_list: Fn = Default.orderedList, list_item: Fn = Default.listItem, code: Fn = Default.code, paragraph: Fn = Default.paragraph, text: Fn = Default.text, ref: Fn = Default.ref, pub fn jinjaRef(writer: *Writer, _: Node) anyerror![]const u8 { try writer.writeAll("{%"); return "%}"; } pub const default: Config = .{ .root = Default.root, .block = Default.block, .link = Default.link, .image = Default.image, .h1 = Default.h1, .h2 = Default.h2, .h3 = Default.h3, .h4 = Default.h4, .h5 = Default.h5, .h6 = Default.h6, .bold = Default.bold, .italic = Default.italic, .unordered_list = Default.unorderedList, .ordered_list = Default.orderedList, .list_item = Default.listItem, .code = Default.code, .paragraph = Default.paragraph, .text = Default.text, .ref = Default.ref, }; const Default = struct { pub fn root(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll( \\ \\ \\
\\ \\ \\ \\
\\
\\
);
return
\\
\\
\\
\\
;
}
pub fn link(writer: *Writer, node: Node) ![]const u8 {
try writer.print(
\\
, .{node.href.?});
return "";
}
pub fn image(writer: *Writer, node: Node) ![]const u8 {
try writer.print(
\\"); return \\
\\ ; } pub fn text(_: *Writer, _: Node) ![]const u8 { return ""; } pub fn ref(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("{{"); return "}}"; } };