XML encode # character in SVGs

Fixes #130.

See also https://stackoverflow.com/a/38459219.
This commit is contained in:
Daniel Compton 2018-01-25 23:18:32 +13:00
parent 04ab87b576
commit 17b81ba52c
1 changed files with 11 additions and 3 deletions

View File

@ -1,10 +1,18 @@
(ns day8.re-frame.trace.utils.macros (ns day8.re-frame.trace.utils.macros
(:require [clojure.java.io :as io])) (:require [clojure.java.io :as io]
[clojure.string :as str]))
(defmacro slurp-macro (defmacro slurp-macro
"Reads a file as a string. Slurp is wrapped in a macro so it can interact with local files before clojurescript compilation." "Reads a file as a string. Slurp is wrapped in a macro so it can interact with local files before clojurescript compilation.
#'s are replaced with %23 for URL encoding."
;; For reasons unknown (to me), browsers don't like URL encoding the entire string.
;; I suspect XML encoding the attributes is the correct way to do this, but
;; #'s are the problem here, so we so we do surgery on the one problematic symbol.
[path] [path]
(slurp (io/resource path))) (str/replace
(slurp (io/resource path))
"#"
"%23"))
(defmacro with-cljs-devtools-prefs [prefs & body] (defmacro with-cljs-devtools-prefs [prefs & body]
`(let [previous-config# (devtools.prefs/get-prefs) `(let [previous-config# (devtools.prefs/get-prefs)