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 block(writer: *Writer, node: 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( \\"; } pub fn h1(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("

"); return \\

\\ ; } pub fn h2(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("

"); return \\

\\ ; } pub fn h3(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("

"); return \\

\\ ; } pub fn h4(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("

"); return \\

\\ ; } pub fn h5(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("
"); return \\
\\ ; } pub fn h6(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("
"); return \\
\\ ; } pub fn bold(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll(""); return ""; } pub fn italic(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll(""); return ""; } pub fn unorderedList(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll( \\ \\ ; } pub fn orderedList(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll( \\
    \\ ); return \\
\\ ; } pub fn listItem(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("
  • "); return \\
  • \\ ; } pub fn code(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll( \\ ); return ""; } pub fn paragraph(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("

    "); return \\

    \\ ; } pub fn text(_: *Writer, _: Node) ![]const u8 { return ""; } pub fn ref(writer: *Writer, _: Node) ![]const u8 { try writer.writeAll("{{"); return "}}"; } };