とっさにわからなかったのでメモ
Clojureでpr-strしてClojureScriptでread-stringすればいい
Luminusが標準で使うSelmerを使ってJavaScript経由で渡す場合、pr-strをもう1回使ってJavaScript用のエスケープをしておく。
Selmerのフィルターとしてcljsを作っておくと便利
clj
(ns sample
(:require [selmer.filters :as f]))
(f/add-filter! :cljs (fn [x] [:safe (pr-str (pr-str x))]))
html
<script type="text/javascript">
var value = {{value|cljs}};
</script>
cljs
(ns sample
(:require [cljs.reader :as r]))
(r/read-string js/value)
※追記
このやり方だと</script>があるとXSS発生してしまうので、display:noneの領域に出力しておいて goog.string.unescapeEntitiesを使ってunescapeするほうがいいかも・・・