0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-01-10 17:00:36 -05:00

🐛 Fixes issue when parsing exponential numbers in paths (backport).

This commit is contained in:
alonso.torres 2021-04-13 12:14:40 +02:00 committed by Andrey Antukh
parent 94ccc013d7
commit 162b0cfa6c

View file

@ -31,11 +31,11 @@
(into [] (impl-simplify/simplify points tolerance true))))) (into [] (impl-simplify/simplify points tolerance true)))))
;; ;;
(def commands-regex #"(?i)[a-z][^a-z]*") (def commands-regex #"(?i)[mzlhvcsqta][^mzlhvcsqta]*")
;; Matches numbers for path values allows values like... -.01, 10, +12.22 ;; Matches numbers for path values allows values like... -.01, 10, +12.22
;; 0 and 1 are special because can refer to flags ;; 0 and 1 are special because can refer to flags
(def num-regex #"[+-]?(\d+(\.\d+)?|\.\d+)") (def num-regex #"[+-]?(\d+(\.\d+)?|\.\d+)(e[+-]?\d+)?")
(def flag-regex #"[01]") (def flag-regex #"[01]")
@ -373,14 +373,15 @@
(reduce simplify-command [[start] start-pos start-pos start-pos start-pos]) (reduce simplify-command [[start] start-pos start-pos start-pos start-pos])
(first)))) (first))))
(defn path->content [string] (defn path->content [path-str]
(let [clean-string (-> string (let [clean-path-str
(str/trim) (-> path-str
;; Change "commas" for spaces (str/trim)
(str/replace #"," " ") ;; Change "commas" for spaces
;; Remove all consecutive spaces (str/replace #"," " ")
(str/replace #"\s+" " ")) ;; Remove all consecutive spaces
commands (re-seq commands-regex clean-string)] (str/replace #"\s+" " "))
commands (re-seq commands-regex clean-path-str)]
(-> (mapcat parse-command commands) (-> (mapcat parse-command commands)
(simplify-commands)))) (simplify-commands))))