This commit is contained in:
@@ -231,15 +231,25 @@
|
||||
(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 separated-by-explicit-paragraph-break?
|
||||
"Returh truthy if each successive pair of elements is separated by
|
||||
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))
|
||||
(-> predator
|
||||
(update :children #(conj % prey))
|
||||
(assoc-in [:position :end] (-> prey :position :end))))
|
||||
([predator prey & more-prey]
|
||||
(reduce swallow predator (cons prey more-prey))))
|
||||
|
||||
(comment
|
||||
(-> [1 2 3 4]
|
||||
@@ -255,13 +265,20 @@
|
||||
(loop [acc []
|
||||
cs (vec children)]
|
||||
(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"))
|
||||
& rest]
|
||||
:guard #(apply separated-by-explicit-paragraph-break? %))
|
||||
(recur (conj acc (swallow para tex)) rest)
|
||||
[] acc
|
||||
[c & rest]
|
||||
(recur (conj acc c) rest))))
|
||||
(recur (conj acc c) rest)
|
||||
[] acc)))
|
||||
doc)]
|
||||
@r))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user