From 5554619a9d3baa3de03ecd91c7d27d92e293a03f Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Tue, 11 May 2021 22:13:50 +0200 Subject: [PATCH] Selmer: util/set-missing-value-formatter! --- feature-selmer/babashka/impl/selmer.clj | 13 +++++++++---- src/babashka/main.clj | 4 +++- test-resources/lib_tests/selmer/our_test.clj | 12 ++++++++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/feature-selmer/babashka/impl/selmer.clj b/feature-selmer/babashka/impl/selmer.clj index eb9a7099..49ad7dda 100644 --- a/feature-selmer/babashka/impl/selmer.clj +++ b/feature-selmer/babashka/impl/selmer.clj @@ -5,7 +5,8 @@ [selmer.filters :as filters] [selmer.parser] [selmer.tags :as tags] - [selmer.util :as util])) + [selmer.util :as util] + [selmer.validator :as validator])) (def spns (sci/create-ns 'selmer.parser nil)) @@ -72,8 +73,6 @@ (def sfns (sci/create-ns 'selmer.filters nil)) -(def selmer-filters-ns (sci/create-ns 'selmer.filters sfns)) - (def selmer-filters-namespace {'add-filter! (sci/copy-var filters/add-filter! sfns) 'remove-filter! (sci/copy-var filters/remove-filter! sfns)}) @@ -97,4 +96,10 @@ 'turn-on-escaping! (sci/copy-var turn-on-escaping! suns) '*escape-variables* escape-variables 'with-escaping (sci/copy-var with-escaping suns) - 'without-escaping (sci/copy-var without-escaping suns)}) + 'without-escaping (sci/copy-var without-escaping suns) + 'set-missing-value-formatter! (sci/copy-var util/set-missing-value-formatter! suns)}) + +(def svns (sci/create-ns 'selmer.validator nil)) + +(def selmer-validator-namespace + {'validate-off! (sci/copy-var validator/validate-off! svns)}) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 83b499e8..fb33ab6a 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -392,7 +392,9 @@ Use bb run --help to show this help output. 'selmer.filters @(resolve 'babashka.impl.selmer/selmer-filters-namespace) 'selmer.util - @(resolve 'babashka.impl.selmer/selmer-util-namespace)))) + @(resolve 'babashka.impl.selmer/selmer-util-namespace) + 'selmer.validator + @(resolve 'babashka.impl.selmer/selmer-validator-namespace)))) (def imports '{ArithmeticException java.lang.ArithmeticException diff --git a/test-resources/lib_tests/selmer/our_test.clj b/test-resources/lib_tests/selmer/our_test.clj index 4af2e85c..33599c1a 100644 --- a/test-resources/lib_tests/selmer/our_test.clj +++ b/test-resources/lib_tests/selmer/our_test.clj @@ -2,7 +2,8 @@ "Some additional tests we added ourselves" (:require [clojure.test :as t :refer [deftest is testing]] [selmer.parser :as selmer] - [selmer.util :as util])) + [selmer.util :as util] + [selmer.validator :as validator])) (deftest escaping-test (testing "escaping by default" @@ -16,5 +17,12 @@ (is (= "&foo" (selmer/render "{% firstof foo bar %}" {:foo "&foo" :bar 2})))) (testing "macros" (is (= "&foo" (util/without-escaping (selmer/render "{% firstof foo bar %}" {:foo "&foo" :bar 2})))) - (is (= "&foo" (util/with-escaping (selmer/render "{% firstof foo bar %}" {:foo "&foo" :bar 2})))))) + (is (= "&foo" (util/with-escaping (selmer/render "{% firstof foo bar %}" {:foo "&foo" :bar 2}))))) + (testing "missing value" + (util/set-missing-value-formatter! (constantly "")) + (is (= "" (selmer/render "{{ foo }}" {})))) + #_(testing "validator off" + (is (thrown? Exception (selmer/render "{% if foo %} yeah " {:foo true}))) + (validator/validate-off!) + (is (selmer/render "{% if foo %} yeah " {:foo true}))))