fix: ordered list numbers

This commit is contained in:
Tienson Qin
2022-04-21 10:54:50 +08:00
parent 4eec369740
commit 87007f8b07
4 changed files with 51 additions and 15 deletions

View File

@@ -1,6 +1,8 @@
(ns frontend.util.list
(:require [frontend.util.thingatpt :as thingatpt]
[frontend.util.cursor :as cursor]))
[frontend.util.cursor :as cursor]
[clojure.string :as string]
[frontend.util :as util]))
(defn get-prev-item [& [input]]
(when-not (cursor/textarea-cursor-first-row? input)
@@ -37,3 +39,20 @@
(reset! end-pos (:end next-item))))
(cursor/move-cursor-to input current-pos)
@end-pos)))
(defn re-order-items
[lines start-idx]
(loop [lines lines
idx start-idx
result nil]
(let [[line & others] lines]
(if (empty? lines)
result
(let [[_ num-str] (re-find #"^(\d+){1}\." line)
num (if num-str (util/safe-parse-int num-str) nil)
[idx' result'] (if num
(let [idx' (inc idx)
line' (string/replace-first line (str num ".") (str idx' "."))]
[idx' (if result (str result "\n" line') line')])
[idx (str result "\n" line)])]
(recur others idx' result'))))))