From bb8a17fa2517324ac6cd0ce498dcc189a2d8fb2c Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Sun, 26 Oct 2025 11:22:46 +0200 Subject: #9: Implement zipper support --- src/dompa/nodes.cljc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/dompa') 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. -- cgit v1.2.3