From f811a519b5aaca07890b59aa1490f0bdd3f16357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Fri, 27 Feb 2026 18:45:14 -0700 Subject: [PATCH] feat: to-html --- doerg/src/net/deertopia/doerg/element.clj | 4 ++-- doerg/src/net/deertopia/doerg/render.clj | 6 ++++++ doerg/src/net/deertopia/doerg/repl.clj | 3 +-- doerg/test/net/deertopia/doerg/render_test.clj | 2 ++ doerg/test/net/deertopia/doerg/tex-test.org | 1 - 5 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 doerg/test/net/deertopia/doerg/render_test.clj diff --git a/doerg/src/net/deertopia/doerg/element.clj b/doerg/src/net/deertopia/doerg/element.clj index 632ae6c..9a0b5b2 100644 --- a/doerg/src/net/deertopia/doerg/element.clj +++ b/doerg/src/net/deertopia/doerg/element.clj @@ -180,8 +180,8 @@ parser, return a map with the following keys • :top-level-nodes The nodes that /should/ be at the top-level. • :first-section-nodes The nodes that should be wrapped in a new - section node - • :rest Everything else!" + section node. + • :rest Everything else." [nodes] (let [[of-top-level remaining-nodes] (->> nodes (split-with #(of-type? % "property-drawer" "keyword"))) diff --git a/doerg/src/net/deertopia/doerg/render.clj b/doerg/src/net/deertopia/doerg/render.clj index 44151d4..b90258e 100644 --- a/doerg/src/net/deertopia/doerg/render.clj +++ b/doerg/src/net/deertopia/doerg/render.clj @@ -72,6 +72,12 @@ [:article rendered]]]))) +(defn to-html + "Read `f` with `slurp` as an Org document and return a string of + rendered HTML." + [f] + (str (hiccup/html {} (-> f slurp element/read-string org-document)))) + ;;; Further dispatching on `org-element` diff --git a/doerg/src/net/deertopia/doerg/repl.clj b/doerg/src/net/deertopia/doerg/repl.clj index fd407e6..e9c3329 100644 --- a/doerg/src/net/deertopia/doerg/repl.clj +++ b/doerg/src/net/deertopia/doerg/repl.clj @@ -37,8 +37,7 @@ (force-create-sym-link (fs/file dest "Temml-Plex.css") (io/resource "net/deertopia/doerg/Temml-Plex.css")) (fs/delete-if-exists (fs/file dest "index.html")) - (->> (h/html (-> src slurp element/read-string render/org-document)) - str (spit (fs/file dest "index.html")))) + (->> src render/to-html str (spit (fs/file dest "index.html")))) (defn render-edn [& {:keys [src dest] :or {src some-org-file diff --git a/doerg/test/net/deertopia/doerg/render_test.clj b/doerg/test/net/deertopia/doerg/render_test.clj new file mode 100644 index 0000000..ab6df2d --- /dev/null +++ b/doerg/test/net/deertopia/doerg/render_test.clj @@ -0,0 +1,2 @@ +(ns net.deertopia.doerg.render-test + (:require [net.deertopia.doerg.render :as sut])) diff --git a/doerg/test/net/deertopia/doerg/tex-test.org b/doerg/test/net/deertopia/doerg/tex-test.org index 50c3f97..1de6c11 100644 --- a/doerg/test/net/deertopia/doerg/tex-test.org +++ b/doerg/test/net/deertopia/doerg/tex-test.org @@ -1,5 +1,4 @@ #+title: aghhh -#+latex_header: \usepackage{ifxetex} - blah blah prose prose prose \(c = \sqrt{x^2 + y^2}\), alal. - this thing is \(x\)