fix: potential fix for #2249

This commit is contained in:
Tienson Qin
2021-07-29 21:18:49 +08:00
parent a449ca96ad
commit 66d2997ca9
2 changed files with 27 additions and 25 deletions

View File

@@ -33,30 +33,31 @@
;; (find-position "** hello _w_" "hello w")
(defn find-position
[markup text]
(try
(let [pos (loop [t1 (-> markup string/lower-case seq)
t2 (-> text string/lower-case seq)
i1 0
i2 0]
(let [[h1 & r1] t1
[h2 & r2] t2]
(cond
(or (empty? t1) (empty? t2))
i1
(when (and (string? markup) (string? text))
(try
(let [pos (loop [t1 (-> markup string/lower-case seq)
t2 (-> text string/lower-case seq)
i1 0
i2 0]
(let [[h1 & r1] t1
[h2 & r2] t2]
(cond
(or (empty? t1) (empty? t2))
i1
(= h1 h2)
(recur r1 r2 (inc i1) (inc i2))
(= h1 h2)
(recur r1 r2 (inc i1) (inc i2))
(#{\[ \space \]} h2)
(recur t1 r2 i1 (inc i2))
(#{\[ \space \]} h2)
(recur t1 r2 i1 (inc i2))
:else
(recur r1 t2 (inc i1) i2))))]
(if (and (= (util/nth-safe markup pos)
(util/nth-safe markup (inc pos))
"]"))
(+ pos 2)
pos))
(catch js/Error e
(log/error :diff/find-position {:error e})
(count markup))))
:else
(recur r1 t2 (inc i1) i2))))]
(if (and (= (util/nth-safe markup pos)
(util/nth-safe markup (inc pos))
"]"))
(+ pos 2)
pos))
(catch js/Error e
(log/error :diff/find-position {:error e})
(count markup)))))