From 9fc8710cad7b106c179d480c31933af79d0030ae Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Fri, 31 Aug 2018 10:49:48 +0300 Subject: [PATCH] inline lookup-structs --- modules/reitit-core/src/reitit/core.cljc | 80 +++++++++--------------- 1 file changed, 28 insertions(+), 52 deletions(-) diff --git a/modules/reitit-core/src/reitit/core.cljc b/modules/reitit-core/src/reitit/core.cljc index 88503b2c..9f88600a 100644 --- a/modules/reitit-core/src/reitit/core.cljc +++ b/modules/reitit-core/src/reitit/core.cljc @@ -165,23 +165,6 @@ :compile (fn [[_ {:keys [handler]}] _] handler) :conflicts (partial throw-on-conflicts! path-conflicts-str)}) -(defn- linear-router-lookup-structs - "Returns a 2-item vec of lookup structures. - - The first is a vec of Routes. - The second is a map of route names to lookup fns." - [compiled-routes] - (reduce - (fn [[pl nl] [p {:keys [name] :as data} result]] - (let [{:keys [path-params] :as route} (impl/create [p data result]) - f #(if-let [path (impl/path-for route %)] - (->Match p data result % path) - (->PartialMatch p data result % path-params))] - [(conj pl route) - (if name (assoc nl name f) nl)])) - [[] {}] - compiled-routes)) - (defn linear-router "Creates a linear-router from resolved routes and optional expanded options. See [[router]] for available options" @@ -189,7 +172,16 @@ (linear-router compiled-routes {})) ([compiled-routes opts] (let [names (find-names compiled-routes opts) - [pl nl] (linear-router-lookup-structs compiled-routes) + [pl nl] (reduce + (fn [[pl nl] [p {:keys [name] :as data} result]] + (let [{:keys [path-params] :as route} (impl/create [p data result]) + f #(if-let [path (impl/path-for route %)] + (->Match p data result % path) + (->PartialMatch p data result % path-params))] + [(conj pl route) + (if name (assoc nl name f) nl)])) + [[] {}] + compiled-routes) lookup (impl/fast-map nl) routes (uncompile-routes compiled-routes)] ^{:type ::router} @@ -218,21 +210,6 @@ (if-let [match (impl/fast-get lookup name)] (match (impl/path-params path-params)))))))) -(defn- lookup-router-lookup-structs - "Returns a 2-item vec of lookup structures. - - The first is a map of paths to Matches. - The second is a map of route names to Matches." - [compiled-routes] - (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-routes)) - (defn lookup-router "Creates a lookup-router from resolved routes and optional expanded options. See [[router]] for available options" @@ -246,7 +223,14 @@ {:wilds wilds :routes compiled-routes}))) (let [names (find-names compiled-routes opts) - [pl nl] (lookup-router-lookup-structs compiled-routes) + [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-routes) data (impl/fast-map pl) lookup (impl/fast-map nl) routes (uncompile-routes compiled-routes)] @@ -271,23 +255,6 @@ (if-let [match (impl/fast-get lookup name)] (match (impl/path-params path-params)))))))) -(defn- segment-router-lookup-structs - "Returns a 2-item vec of lookup structures. - - The first is a prefix-tree of segments and associated Matches. - The second is a map of route names to Matches or PartialMatches." - [compiled-routes] - (reduce - (fn [[pl nl] [p {:keys [name] :as data} result]] - (let [{:keys [path-params] :as route} (impl/create [p data result]) - f #(if-let [path (impl/path-for route %)] - (->Match p data result % path) - (->PartialMatch p data result % path-params))] - [(segment/insert pl p (->Match p data result nil nil)) - (if name (assoc nl name f) nl)])) - [nil {}] - compiled-routes)) - (defn segment-router "Creates a special prefix-tree style segment router from resolved routes and optional expanded options. See [[router]] for available options" @@ -295,7 +262,16 @@ (segment-router compiled-routes {})) ([compiled-routes opts] (let [names (find-names compiled-routes opts) - [pl nl] (segment-router-lookup-structs compiled-routes) + [pl nl] (reduce + (fn [[pl nl] [p {:keys [name] :as data} result]] + (let [{:keys [path-params] :as route} (impl/create [p data result]) + f #(if-let [path (impl/path-for route %)] + (->Match p data result % path) + (->PartialMatch p data result % path-params))] + [(segment/insert pl p (->Match p data result nil nil)) + (if name (assoc nl name f) nl)])) + [nil {}] + compiled-routes) lookup (impl/fast-map nl) routes (uncompile-routes compiled-routes)] ^{:type ::router}