From b0a3895a187f531829eecf648ee0d36b51a5cdfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Tue, 10 Mar 2026 13:02:37 -0600 Subject: [PATCH] --- doerg/src/net/deertopia/doerg/element.clj | 38 +++++++++++++++-------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/doerg/src/net/deertopia/doerg/element.clj b/doerg/src/net/deertopia/doerg/element.clj index dd52cfb..ac2cdeb 100644 --- a/doerg/src/net/deertopia/doerg/element.clj +++ b/doerg/src/net/deertopia/doerg/element.clj @@ -11,7 +11,8 @@ [net.deertopia.doerg.config :as cfg] [com.rpl.specter :as sp] [clojure.tools.logging.readable :as lr] - [clojure.zip :as z]) + [clojure.zip :as z] + [com.rpl.specter.zipper :as sz]) (:import (java.util UUID)) (:refer-clojure :exclude [read-string])) @@ -229,6 +230,16 @@ (recur next-loc-read next-loc-write)))) wa-loc)) +(defn separated-by-explicit-paragraph-break? [e₁ e₂] + (= (-> e₁ :position :end :line inc) + (-> e₂ :position :start :line inc))) + +(defn swallow [predator prey] + (assert (greater-element? predator)) + (-> predator + (update :children #(conj % prey)) + (assoc-in [:position :end] (-> prey :position :end)))) + (comment (-> [1 2 3 4] (neighbourly-mapcat prn) ) @@ -238,18 +249,19 @@ blah (sp/transform [postorder-walker - (sp/must :children) - (sp/collect-one sp/VAL) - sp/INDEXED-VALS - #_ - #(of-type? (second %) "latex-environment") - #_ - sp/ALL - #_ - sp/INDEXED-VALS] - (fn [siblings x] - (swap! r #(conj % {:siblings siblings :x x})) - x) + (sp/must :children)] + (fn [children] + (-> children z/vector-zip + (=>> (fn [para-loc] + (let [tex-loc (some-> para-loc z/right) + next-para (some-> tex-loc z/right)] + (when (and (of-type? (z/node para-loc) "paragraph") + (some-> tex-loc z/node + (of-type? "latex-environment"))) + (when (separated-by-explicit-paragraph-break? + (z/node para-loc) (z/node tex-loc)) + (swap! r #(conj % (z/node para-loc)))))) + (z/node para-loc))))) doc)] @r))