summaryrefslogtreecommitdiff
path: root/src/dompa/nodes.cljc
diff options
context:
space:
mode:
authorAsko Nõmm <asko@repl.ee>2025-10-26 11:38:28 +0200
committerGitHub <noreply@github.com>2025-10-26 11:38:28 +0200
commita30919848d19168b4010f37d29c0a42a2c9f8f77 (patch)
treee1be8dfb423488d6f1846d5890dd5cef59333ca5 /src/dompa/nodes.cljc
parent1ea91841b1a1a2d8e0b75750b5d765278ee78782 (diff)
parenta0a150d89d30af3ca4d586fc7874d70778b51e73 (diff)
Merge pull request #10 from askonomm/9-investigate-making-traverse-impl-be-zipper-basedv1.1.0
9 investigate making traverse impl be zipper based
Diffstat (limited to 'src/dompa/nodes.cljc')
-rw-r--r--src/dompa/nodes.cljc15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/dompa/nodes.cljc b/src/dompa/nodes.cljc
index 9dbecd0..e99b364 100644
--- a/src/dompa/nodes.cljc
+++ b/src/dompa/nodes.cljc
@@ -1,4 +1,5 @@
-(ns dompa.nodes)
+(ns dompa.nodes
+ (:require [clojure.zip :as zip]))
(def ^:private default-void-nodes
#{:!doctype :!DOCTYPE :area :base :br :col :embed :hr :img :input
@@ -50,6 +51,18 @@
updated-nodes))
(reduce [] nodes)))
+(defn zip
+ "Creates a zipper for given a given `node`."
+ [node]
+ (zip/zipper
+ (fn branch? [node]
+ (boolean (seq (:node/children node))))
+ (fn children [node]
+ (:node/children node))
+ (fn make-node [node children]
+ (assoc node :node/children children))
+ node))
+
(defn ->html
"Transform a vector of `nodes` into an HTML string.