From ee0c733726b372b487b8feddc450885a5a9bbcf0 Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Tue, 26 Dec 2017 17:56:46 +0200 Subject: [PATCH] Compile routes already in `reitit.core/router` --- modules/reitit-core/src/reitit/core.cljc | 29 +++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/modules/reitit-core/src/reitit/core.cljc b/modules/reitit-core/src/reitit/core.cljc index 656f7156..552b8377 100644 --- a/modules/reitit-core/src/reitit/core.cljc +++ b/modules/reitit-core/src/reitit/core.cljc @@ -142,8 +142,7 @@ ([routes] (linear-router routes {})) ([routes opts] - (let [compiled (compile-routes routes opts) - names (find-names routes opts) + (let [names (find-names routes opts) [pl nl] (reduce (fn [[pl nl] [p {:keys [name] :as data} result]] (let [{:keys [params] :as route} (impl/create [p data result]) @@ -152,7 +151,7 @@ (->PartialMatch p data result % params))] [(conj pl route) (if name (assoc nl name f) nl)])) - [[] {}] compiled) + [[] {}] routes) lookup (impl/fast-map nl)] ^{:type ::router} (reify @@ -160,7 +159,7 @@ (router-name [_] :linear-router) (routes [_] - compiled) + routes) (options [_] opts) (route-names [_] @@ -190,14 +189,13 @@ (str "can't create :lookup-router with wildcard routes: " wilds) {:wilds wilds :routes routes}))) - (let [compiled (compile-routes routes opts) - names (find-names routes opts) + (let [names (find-names routes opts) [pl nl] (reduce (fn [[pl nl] [p {:keys [name] :as data} result]] [(assoc pl p (->Match p data result {} p)) (if name (assoc nl name #(->Match p data result % p)) - nl)]) [{} {}] compiled) + nl)]) [{} {}] routes) data (impl/fast-map pl) lookup (impl/fast-map nl)] ^{:type ::router} @@ -205,7 +203,7 @@ (router-name [_] :lookup-router) (routes [_] - compiled) + routes) (options [_] opts) (route-names [_] @@ -225,8 +223,7 @@ ([routes] (segment-router routes {})) ([routes opts] - (let [compiled (compile-routes routes opts) - names (find-names routes opts) + (let [names (find-names routes opts) [pl nl] (reduce (fn [[pl nl] [p {:keys [name] :as data} result]] (let [{:keys [params] :as route} (impl/create [p data result]) @@ -235,7 +232,7 @@ (->PartialMatch p data result % params))] [(segment/insert pl p (->Match p data result nil nil)) (if name (assoc nl name f) nl)])) - [nil {}] compiled) + [nil {}] routes) lookup (impl/fast-map nl)] ^{:type ::router} (reify @@ -243,7 +240,7 @@ (router-name [_] :segment-router) (routes [_] - compiled) + routes) (options [_] opts) (route-names [_] @@ -272,7 +269,7 @@ (str ":single-static-path-router requires exactly 1 static route: " routes) {:routes routes}))) (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) match (->Match p data result {} p)] ^{:type ::router} @@ -280,7 +277,7 @@ (router-name [_] :single-static-path-router) (routes [_] - compiled) + routes) (options [_] opts) (route-names [_] @@ -304,7 +301,6 @@ (mixed-router routes {})) ([routes opts] (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) wildcard-router (segment-router wild opts) static-router (->static-router lookup opts) @@ -314,7 +310,7 @@ (router-name [_] :mixed-router) (routes [_] - compiled) + routes) (options [_] opts) (route-names [_] @@ -350,6 +346,7 @@ (let [{:keys [router] :as opts} (meta-merge default-router-options opts) routes (resolve-routes raw-routes opts) conflicting (conflicting-routes routes) + routes (compile-routes routes opts) wilds? (boolean (some impl/wild-route? routes)) all-wilds? (every? impl/wild-route? routes) router (cond