This commit is contained in:
@@ -231,15 +231,25 @@
|
|||||||
(recur next-loc-read next-loc-write))))
|
(recur next-loc-read next-loc-write))))
|
||||||
wa-loc))
|
wa-loc))
|
||||||
|
|
||||||
(defn separated-by-explicit-paragraph-break? [e₁ e₂]
|
(defn separated-by-explicit-paragraph-break?
|
||||||
(= (-> e₁ :position :end :line inc)
|
"Returh truthy if each successive pair of elements is separated by
|
||||||
(-> e₂ :position :start :line inc)))
|
at least one explicit paragraph break; i.e. a blank line."
|
||||||
|
[& elements]
|
||||||
|
(match elements
|
||||||
|
[e₁ e₂ & es]
|
||||||
|
(and (< (-> e₁ :position :end :line)
|
||||||
|
(-> e₂ :position :start :line))
|
||||||
|
(recur es))
|
||||||
|
:else true))
|
||||||
|
|
||||||
(defn swallow [predator prey]
|
(defn swallow
|
||||||
|
([predator prey]
|
||||||
(assert (greater-element? predator))
|
(assert (greater-element? predator))
|
||||||
(-> predator
|
(-> predator
|
||||||
(update :children #(conj % prey))
|
(update :children #(conj % prey))
|
||||||
(assoc-in [:position :end] (-> prey :position :end))))
|
(assoc-in [:position :end] (-> prey :position :end))))
|
||||||
|
([predator prey & more-prey]
|
||||||
|
(reduce swallow predator (cons prey more-prey))))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(-> [1 2 3 4]
|
(-> [1 2 3 4]
|
||||||
@@ -255,13 +265,20 @@
|
|||||||
(loop [acc []
|
(loop [acc []
|
||||||
cs (vec children)]
|
cs (vec children)]
|
||||||
(match cs
|
(match cs
|
||||||
[(para :guard #(of-type? % "paragraph"))
|
([(para₁ :guard #(of-type? % "paragraph"))
|
||||||
|
(tex :guard #(of-type? % "latex-environment"))
|
||||||
|
(para₂ :guard #(of-type? % "paragraph"))
|
||||||
|
& rest]
|
||||||
|
:guard #(apply separated-by-explicit-paragraph-break? %))
|
||||||
|
(recur (conj acc (swallow para₁ tex para₂)) rest)
|
||||||
|
([(para :guard #(of-type? % "paragraph"))
|
||||||
(tex :guard #(of-type? % "latex-environment"))
|
(tex :guard #(of-type? % "latex-environment"))
|
||||||
& rest]
|
& rest]
|
||||||
|
:guard #(apply separated-by-explicit-paragraph-break? %))
|
||||||
(recur (conj acc (swallow para tex)) rest)
|
(recur (conj acc (swallow para tex)) rest)
|
||||||
[] acc
|
|
||||||
[c & rest]
|
[c & rest]
|
||||||
(recur (conj acc c) rest))))
|
(recur (conj acc c) rest)
|
||||||
|
[] acc)))
|
||||||
doc)]
|
doc)]
|
||||||
@r))
|
@r))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user