summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAsko Nõmm <asko@nmm.ee>2025-10-26 11:22:46 +0200
committerAsko Nõmm <asko@nmm.ee>2025-10-26 11:22:46 +0200
commitbb8a17fa2517324ac6cd0ce498dcc189a2d8fb2c (patch)
tree8657b4ae5e6e5e8471f29deda2949e6f62e202ec /src
parenta2e703f10554f3aa99487b53de4e5e6a5d6ebddd (diff)
#9: Implement zipper support
Diffstat (limited to 'src')
-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.