lib/zen/src/math/root.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2
3 pub const mathml = @import("mathml.zig");
4 pub const parse = @import("parse.zig");
5 pub const symbol = @import("symbol.zig");
6 pub const token = @import("token.zig");
7
8 pub const Diagnostic = parse.Diagnostic;
9 pub const Error = parse.Error;
10
11 const Allocator = std.mem.Allocator;
12
13 pub fn renderInline(out: *std.ArrayList(u8), allocator: Allocator, source: []const u8, diagnostic: ?*Diagnostic) Error!void {
14 try render(out, allocator, source, "<math>", diagnostic);
15 }
16
17 pub fn renderDisplay(out: *std.ArrayList(u8), allocator: Allocator, source: []const u8, diagnostic: ?*Diagnostic) Error!void {
18 try render(out, allocator, source, "<math display=\"block\">", diagnostic);
19 }
20
21 fn render(out: *std.ArrayList(u8), allocator: Allocator, source: []const u8, open_tag: []const u8, diagnostic: ?*Diagnostic) Error!void {
22 var parsed = try parse.parse(allocator, source, diagnostic);
23 defer parsed.deinit();
24 try out.appendSlice(allocator, open_tag);
25 try mathml.append(out, allocator, parsed.root);
26 try out.appendSlice(allocator, "</math>");
27 }