diff --git a/common/src/app/common/svg.cljc b/common/src/app/common/svg.cljc index e0c718362b..4ea6278cc9 100644 --- a/common/src/app/common/svg.cljc +++ b/common/src/app/common/svg.cljc @@ -800,15 +800,24 @@ "skewX" (apply gmt/skew-matrix (format-skew-x-params params)) "skewY" (apply gmt/skew-matrix (format-skew-y-params params)))) +(def ^:private + xf-parse-numbers + (comp + (map first) + (keep not-empty) + (map d/parse-double))) + +(defn parse-numbers + [data] + (->> (re-seq number-regex data) + (into [] xf-parse-numbers))) + (defn parse-transform [transform] (if (string? transform) (->> (re-seq matrices-regex transform) (map (fn [[_ type params]] - (let [params (->> (re-seq number-regex params) - (map first) - (keep not-empty) - (map d/parse-double))] + (let [params (parse-numbers params)] (to-matrix type params)))) (reduce gmt/multiply (gmt/matrix))) diff --git a/common/src/app/common/svg/shapes_builder.cljc b/common/src/app/common/svg/shapes_builder.cljc index 343507f770..a831d3c0ea 100644 --- a/common/src/app/common/svg/shapes_builder.cljc +++ b/common/src/app/common/svg/shapes_builder.cljc @@ -63,8 +63,7 @@ viewbox (or (:viewBox attrs) (dm/str "0 0 " width " " height)) - [x y width height] (->> (str/split viewbox #"[\s,]+") - (map d/parse-double)) + [x y width height] (csvg/parse-numbers viewbox) width (if (= width 0) 1 width) height (if (= height 0) 1 height)]