r/o

port comrak quadratic fixes fc2df9bf parent 115c6669

Closes #45.

authored by ~talya committed by ~lotte

1
const std = @import("std");
2
const debug = std.debug;
3
const assert = debug.assert;
4
5
const koino = @import("test_koino");
6
7
const input_file_name = "cc-&-gfm.md";
8
const markdown = @embedFile("./" ++ input_file_name);
9
10
pub fn main() !void {
11
debug.print("Converting './examples/{s}' to HTML.\n", .{input_file_name});
12
13
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
14
defer std.debug.assert(gpa.deinit() == .ok);
15
const allocator = gpa.allocator();
16
17
var arena = std.heap.ArenaAllocator.init(allocator);
18
defer arena.deinit();
19
20
const options = koino.Options{
21
.extensions = .{
22
.table = true,
23
.autolink = true,
24
.strikethrough = true,
25
},
26
};
27
28
var parser = try koino.parser.Parser.init(arena.allocator(), options);
29
defer parser.deinit();
30
try parser.feed(markdown);
31
32
var doc = try parser.finish();
33
defer doc.deinit();
34
35
var buffer = std.array_list.Managed(u8).init(allocator);
36
defer buffer.clearAndFree();
37
try koino.html.print(buffer.writer(), allocator, parser.options, doc);
38
39
const output_file_path = "./examples/output-to-html.html";
40
const cwd = std.fs.cwd();
41
try cwd.writeFile(.{ .data = buffer.items, .sub_path = output_file_path });
42
43
debug.print("Done! Output has been saved in '{s}'.\n", .{output_file_path});
44
}
45