From 93090afa5a83d885aaa822b46a391e2dc1929208 Mon Sep 17 00:00:00 2001 From: Spencer Brower <6729162+sbrow@users.noreply.github.com> Date: Fri, 10 Jul 2026 17:46:49 -0400 Subject: [PATCH] feat: Added commonmark parser. --- content.odin | 6 +++++- flake.nix | 2 ++ main.odin | 11 ++++++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/content.odin b/content.odin index c5f2796..4ee6bcf 100644 --- a/content.odin +++ b/content.odin @@ -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: diff --git a/flake.nix b/flake.nix index 0069e8d..0ed4d42 100644 --- a/flake.nix +++ b/flake.nix @@ -80,6 +80,7 @@ buildInputs = [ pkgs.git + pkgs.cmark ]; doCheck = true; @@ -109,6 +110,7 @@ buildInputs = with pkgs; [ odin ols + cmark # IDE unstable.helix diff --git a/main.odin b/main.odin index d9dbf31..91a3287 100644 --- a/main.odin +++ b/main.odin @@ -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), ) } }