From 0e724ac82163501711095d982eac13406773e5dc Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 25 Jan 2024 16:43:49 +0100 Subject: [PATCH] :bug: Add better fix for parsing svg-dimensions That covers more corner cases --- common/src/app/common/svg.cljc | 17 +++++++++++++---- common/src/app/common/svg/shapes_builder.cljc | 3 +-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/common/src/app/common/svg.cljc b/common/src/app/common/svg.cljc index e0c718362..4ea6278cc 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 343507f77..a831d3c0e 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)]