diff options
Diffstat (limited to 'src/reverse_routing')
| -rw-r--r-- | src/reverse_routing/core.clj | 10 | 
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  | 
