summaryrefslogtreecommitdiff
path: root/src/reverse_routing/core.clj
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-09-09 02:08:28 +1000
committerCarlo Zancanaro <carlo@clearboxsystems.com.au>2013-09-09 02:08:28 +1000
commitedbe046445defc78420afeecd141820e1860c50e (patch)
treed8effed6dcb29496e9fa5fb82d3c68439d5937ee /src/reverse_routing/core.clj
parent48138c786125f43a89ea0c61718de9cdd6da0b50 (diff)
Some utilities for testing (when used in other libraries)
Diffstat (limited to 'src/reverse_routing/core.clj')
-rw-r--r--src/reverse_routing/core.clj10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/reverse_routing/core.clj b/src/reverse_routing/core.clj
index 1977b2a..edc1f57 100644
--- a/src/reverse_routing/core.clj
+++ b/src/reverse_routing/core.clj
@@ -45,8 +45,9 @@
lookup-fn `(fn [[route-name# args#]]
(if (>= (count args#) ~keylen)
(let [~args args#
- r# (#'lookup-route [route-name# (vec (drop ~keylen args#))]
- ~@routes)
+ r# (try (#'lookup-route [route-name# (vec (drop ~keylen args#))]
+ ~@routes)
+ (catch Exception _#))
{uri# :uri, args# :args} r#]
(if r#
(assoc r#
@@ -68,6 +69,11 @@
(= (count args#) (count ~(vec route-args))))
~routes-map)))))
+(defmacro with-url-fn [f & body]
+ `(binding [*lookup-route* (fn [x#] (apply ~f x#))
+ *root* ""]
+ ~@body))
+
(defn url-for [route & arg-values]
(let [spec (*lookup-route* [route arg-values])
{:keys [uri type args]} spec