mirror of
https://github.com/metosin/reitit.git
synced 2026-02-05 11:53:11 +00:00
Compile routes already in reitit.core/router
This commit is contained in:
parent
7e37ab9ad0
commit
ee0c733726
1 changed files with 13 additions and 16 deletions
|
|
@ -142,8 +142,7 @@
|
||||||
([routes]
|
([routes]
|
||||||
(linear-router routes {}))
|
(linear-router routes {}))
|
||||||
([routes opts]
|
([routes opts]
|
||||||
(let [compiled (compile-routes routes opts)
|
(let [names (find-names routes opts)
|
||||||
names (find-names routes opts)
|
|
||||||
[pl nl] (reduce
|
[pl nl] (reduce
|
||||||
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
||||||
(let [{:keys [params] :as route} (impl/create [p data result])
|
(let [{:keys [params] :as route} (impl/create [p data result])
|
||||||
|
|
@ -152,7 +151,7 @@
|
||||||
(->PartialMatch p data result % params))]
|
(->PartialMatch p data result % params))]
|
||||||
[(conj pl route)
|
[(conj pl route)
|
||||||
(if name (assoc nl name f) nl)]))
|
(if name (assoc nl name f) nl)]))
|
||||||
[[] {}] compiled)
|
[[] {}] routes)
|
||||||
lookup (impl/fast-map nl)]
|
lookup (impl/fast-map nl)]
|
||||||
^{:type ::router}
|
^{:type ::router}
|
||||||
(reify
|
(reify
|
||||||
|
|
@ -160,7 +159,7 @@
|
||||||
(router-name [_]
|
(router-name [_]
|
||||||
:linear-router)
|
:linear-router)
|
||||||
(routes [_]
|
(routes [_]
|
||||||
compiled)
|
routes)
|
||||||
(options [_]
|
(options [_]
|
||||||
opts)
|
opts)
|
||||||
(route-names [_]
|
(route-names [_]
|
||||||
|
|
@ -190,14 +189,13 @@
|
||||||
(str "can't create :lookup-router with wildcard routes: " wilds)
|
(str "can't create :lookup-router with wildcard routes: " wilds)
|
||||||
{:wilds wilds
|
{:wilds wilds
|
||||||
:routes routes})))
|
:routes routes})))
|
||||||
(let [compiled (compile-routes routes opts)
|
(let [names (find-names routes opts)
|
||||||
names (find-names routes opts)
|
|
||||||
[pl nl] (reduce
|
[pl nl] (reduce
|
||||||
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
||||||
[(assoc pl p (->Match p data result {} p))
|
[(assoc pl p (->Match p data result {} p))
|
||||||
(if name
|
(if name
|
||||||
(assoc nl name #(->Match p data result % p))
|
(assoc nl name #(->Match p data result % p))
|
||||||
nl)]) [{} {}] compiled)
|
nl)]) [{} {}] routes)
|
||||||
data (impl/fast-map pl)
|
data (impl/fast-map pl)
|
||||||
lookup (impl/fast-map nl)]
|
lookup (impl/fast-map nl)]
|
||||||
^{:type ::router}
|
^{:type ::router}
|
||||||
|
|
@ -205,7 +203,7 @@
|
||||||
(router-name [_]
|
(router-name [_]
|
||||||
:lookup-router)
|
:lookup-router)
|
||||||
(routes [_]
|
(routes [_]
|
||||||
compiled)
|
routes)
|
||||||
(options [_]
|
(options [_]
|
||||||
opts)
|
opts)
|
||||||
(route-names [_]
|
(route-names [_]
|
||||||
|
|
@ -225,8 +223,7 @@
|
||||||
([routes]
|
([routes]
|
||||||
(segment-router routes {}))
|
(segment-router routes {}))
|
||||||
([routes opts]
|
([routes opts]
|
||||||
(let [compiled (compile-routes routes opts)
|
(let [names (find-names routes opts)
|
||||||
names (find-names routes opts)
|
|
||||||
[pl nl] (reduce
|
[pl nl] (reduce
|
||||||
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
(fn [[pl nl] [p {:keys [name] :as data} result]]
|
||||||
(let [{:keys [params] :as route} (impl/create [p data result])
|
(let [{:keys [params] :as route} (impl/create [p data result])
|
||||||
|
|
@ -235,7 +232,7 @@
|
||||||
(->PartialMatch p data result % params))]
|
(->PartialMatch p data result % params))]
|
||||||
[(segment/insert pl p (->Match p data result nil nil))
|
[(segment/insert pl p (->Match p data result nil nil))
|
||||||
(if name (assoc nl name f) nl)]))
|
(if name (assoc nl name f) nl)]))
|
||||||
[nil {}] compiled)
|
[nil {}] routes)
|
||||||
lookup (impl/fast-map nl)]
|
lookup (impl/fast-map nl)]
|
||||||
^{:type ::router}
|
^{:type ::router}
|
||||||
(reify
|
(reify
|
||||||
|
|
@ -243,7 +240,7 @@
|
||||||
(router-name [_]
|
(router-name [_]
|
||||||
:segment-router)
|
:segment-router)
|
||||||
(routes [_]
|
(routes [_]
|
||||||
compiled)
|
routes)
|
||||||
(options [_]
|
(options [_]
|
||||||
opts)
|
opts)
|
||||||
(route-names [_]
|
(route-names [_]
|
||||||
|
|
@ -272,7 +269,7 @@
|
||||||
(str ":single-static-path-router requires exactly 1 static route: " routes)
|
(str ":single-static-path-router requires exactly 1 static route: " routes)
|
||||||
{:routes routes})))
|
{:routes routes})))
|
||||||
(let [[n :as names] (find-names routes opts)
|
(let [[n :as names] (find-names routes opts)
|
||||||
[[p data result] :as compiled] (compile-routes routes opts)
|
[[p data result] :as compiled] routes
|
||||||
p #?(:clj (.intern ^String p) :cljs p)
|
p #?(:clj (.intern ^String p) :cljs p)
|
||||||
match (->Match p data result {} p)]
|
match (->Match p data result {} p)]
|
||||||
^{:type ::router}
|
^{:type ::router}
|
||||||
|
|
@ -280,7 +277,7 @@
|
||||||
(router-name [_]
|
(router-name [_]
|
||||||
:single-static-path-router)
|
:single-static-path-router)
|
||||||
(routes [_]
|
(routes [_]
|
||||||
compiled)
|
routes)
|
||||||
(options [_]
|
(options [_]
|
||||||
opts)
|
opts)
|
||||||
(route-names [_]
|
(route-names [_]
|
||||||
|
|
@ -304,7 +301,6 @@
|
||||||
(mixed-router routes {}))
|
(mixed-router routes {}))
|
||||||
([routes opts]
|
([routes opts]
|
||||||
(let [{wild true, lookup false} (group-by impl/wild-route? routes)
|
(let [{wild true, lookup false} (group-by impl/wild-route? routes)
|
||||||
compiled (compile-routes routes opts)
|
|
||||||
->static-router (if (= 1 (count lookup)) single-static-path-router lookup-router)
|
->static-router (if (= 1 (count lookup)) single-static-path-router lookup-router)
|
||||||
wildcard-router (segment-router wild opts)
|
wildcard-router (segment-router wild opts)
|
||||||
static-router (->static-router lookup opts)
|
static-router (->static-router lookup opts)
|
||||||
|
|
@ -314,7 +310,7 @@
|
||||||
(router-name [_]
|
(router-name [_]
|
||||||
:mixed-router)
|
:mixed-router)
|
||||||
(routes [_]
|
(routes [_]
|
||||||
compiled)
|
routes)
|
||||||
(options [_]
|
(options [_]
|
||||||
opts)
|
opts)
|
||||||
(route-names [_]
|
(route-names [_]
|
||||||
|
|
@ -350,6 +346,7 @@
|
||||||
(let [{:keys [router] :as opts} (meta-merge default-router-options opts)
|
(let [{:keys [router] :as opts} (meta-merge default-router-options opts)
|
||||||
routes (resolve-routes raw-routes opts)
|
routes (resolve-routes raw-routes opts)
|
||||||
conflicting (conflicting-routes routes)
|
conflicting (conflicting-routes routes)
|
||||||
|
routes (compile-routes routes opts)
|
||||||
wilds? (boolean (some impl/wild-route? routes))
|
wilds? (boolean (some impl/wild-route? routes))
|
||||||
all-wilds? (every? impl/wild-route? routes)
|
all-wilds? (every? impl/wild-route? routes)
|
||||||
router (cond
|
router (cond
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue