Skip to content

Commit 37ce044

Browse files
authored
Merge pull request #58 from BrainBlasted/cdavis/markdownToHTML
Move markdownToHTML functions and parse to lib
2 parents 0496a33 + b3c0620 commit 37ce044

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

src/koino.zig

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,37 @@
1+
const std = @import("std");
2+
13
pub const parser = @import("parser.zig");
24
pub const Options = @import("options.zig").Options;
35
pub const nodes = @import("nodes.zig");
46
pub const html = @import("html.zig");
7+
8+
/// Performs work using internalAllocator, and writes the result to a Writer.
9+
fn markdownToHtmlInternal(writer: anytype, internalAllocator: std.mem.Allocator, markdown: []const u8, options: Options) !void {
10+
var doc = try parse(internalAllocator, markdown, options);
11+
defer doc.deinit();
12+
13+
try html.print(writer, internalAllocator, options, doc);
14+
}
15+
16+
/// Parses Markdown into an AST. Use `deinit()' on the returned document to free memory.
17+
pub fn parse(internalAllocator: std.mem.Allocator, markdown: []const u8, options: Options) !*nodes.AstNode {
18+
var p = try parser.Parser.init(internalAllocator, options);
19+
defer p.deinit();
20+
try p.feed(markdown);
21+
return try p.finish();
22+
}
23+
24+
/// Performs work with an ArenaAllocator backed by the page allocator, and allocates the result HTML with resultAllocator.
25+
pub fn markdownToHtml(resultAllocator: std.mem.Allocator, markdown: []const u8, options: Options) ![]u8 {
26+
var result = std.ArrayList(u8).init(resultAllocator);
27+
errdefer result.deinit();
28+
try markdownToHtmlWriter(result.writer(), markdown, options);
29+
return result.toOwnedSlice();
30+
}
31+
32+
/// Performs work with an ArenaAllocator backed by the page allocator, and writes the result to a Writer.
33+
pub fn markdownToHtmlWriter(writer: anytype, markdown: []const u8, options: Options) !void {
34+
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
35+
defer arena.deinit();
36+
try markdownToHtmlInternal(writer, arena.allocator(), markdown, options);
37+
}

src/main.zig

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -136,44 +136,13 @@ fn enableExtension(extension: []const u8, options: *Options) !void {
136136
std.process.exit(1);
137137
}
138138

139-
/// Performs work using internalAllocator, and writes the result to a Writer.
140-
fn markdownToHtmlInternal(writer: anytype, internalAllocator: std.mem.Allocator, options: Options, markdown: []const u8) !void {
141-
var doc = try parse(internalAllocator, options, markdown);
142-
defer doc.deinit();
143-
144-
try html.print(writer, internalAllocator, options, doc);
145-
}
146-
147-
/// Parses Markdown into an AST. Use `deinit()' on the returned document to free memory.
148-
pub fn parse(internalAllocator: std.mem.Allocator, options: Options, markdown: []const u8) !*nodes.AstNode {
149-
var p = try Parser.init(internalAllocator, options);
150-
defer p.deinit();
151-
try p.feed(markdown);
152-
return try p.finish();
153-
}
154-
155-
/// Performs work with an ArenaAllocator backed by the page allocator, and allocates the result HTML with resultAllocator.
156-
pub fn markdownToHtml(resultAllocator: std.mem.Allocator, options: Options, markdown: []const u8) ![]u8 {
157-
var result = std.ArrayList(u8).init(resultAllocator);
158-
errdefer result.deinit();
159-
try markdownToHtmlWriter(result.writer(), options, markdown);
160-
return result.toOwnedSlice();
161-
}
162-
163-
/// Performs work with an ArenaAllocator backed by the page allocator, and writes the result to a Writer.
164-
pub fn markdownToHtmlWriter(writer: anytype, options: Options, markdown: []const u8) !void {
165-
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
166-
defer arena.deinit();
167-
try markdownToHtmlInternal(writer, arena.allocator(), options, markdown);
168-
}
169-
170139
/// Uses a GeneralPurposeAllocator for scratch work instead of an ArenaAllocator to aid in locating memory leaks.
171140
/// Result HTML is allocated by std.testing.allocator.
172141
pub fn testMarkdownToHtml(options: Options, markdown: []const u8) ![]u8 {
173142
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
174143
defer _ = gpa.deinit();
175144

176-
var doc = try parse(gpa.allocator(), options, markdown);
145+
var doc = try koino.parse(gpa.allocator(), markdown, options);
177146
defer doc.deinit();
178147

179148
var result = std.ArrayList(u8).init(std.testing.allocator);

0 commit comments

Comments
 (0)