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 }