feat: Added commonmark parser.

This commit is contained in:
Spencer Brower
2026-07-10 17:46:49 -04:00
parent 54bc4ee322
commit 93090afa5a
3 changed files with 13 additions and 6 deletions
+5 -1
View File
@@ -1,5 +1,7 @@
package main
import cm "vendor:commonmark"
import "core:fmt"
import "core:os"
import "core:strings"
@@ -19,6 +21,7 @@ Page :: struct {
is_starred: bool,
menu: string,
body: string,
body_html: string,
bundle_dir: string,
}
@@ -135,7 +138,8 @@ load_page :: proc(
page.draft = fm.draft
page.is_starred = fm.isStarred
page.menu = fm.menu
page.body = strings.clone(body)
page.body = strings.clone(body)
page.body_html = cm.markdown_to_html_from_string(body, {.Unsafe})
switch page_type {
case .Post:
+2
View File
@@ -80,6 +80,7 @@
buildInputs = [
pkgs.git
pkgs.cmark
];
doCheck = true;
@@ -109,6 +110,7 @@
buildInputs = with pkgs; [
odin
ols
cmark
# IDE
unstable.helix
+6 -5
View File
@@ -5,10 +5,10 @@ import "core:fmt"
import "core:os"
Options :: struct {
base_url: string `args:"name=base-url"`,
content_dir: string `args:"name=content"`,
output_dir: string `args:"name=output"`,
drafts: bool `args:"name=drafts"`,
base_url: string `args:"name=base-url" usage:"hostname (and path) to the root, e.g. https://example.com/"`,
content_dir: string `args:"name=content" usage:"where to look for content files"`,
output_dir: string `args:"name=output" usage:"where to export the completed site"`,
drafts: bool `args:"name=drafts" usage:"Whether to render draft posts"`,
}
main :: proc() {
@@ -55,12 +55,13 @@ print_summary :: proc(pages: []Page) {
}
fmt.printfln(
" [%-11s] %-30s %s %s%s",
" [%-11s] %-30s %s %s%s (%d bytes html)",
type_label,
page.title,
date_short,
page.permalink,
badge,
len(page.body_html),
)
}
}