mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 08:21:11 +00:00
commit
2b57426929
2 changed files with 30 additions and 4 deletions
|
|
@ -69,10 +69,19 @@
|
||||||
(reduced (assoc m :route-params params))))
|
(reduced (assoc m :route-params params))))
|
||||||
nil routes)))
|
nil routes)))
|
||||||
|
|
||||||
|
(defrecord LookupRouter [routes]
|
||||||
|
Routing
|
||||||
|
(match-route [_ path]
|
||||||
|
(routes path)))
|
||||||
|
|
||||||
(defn router
|
(defn router
|
||||||
([data]
|
([data]
|
||||||
(router data {}))
|
(router data {}))
|
||||||
([data opts]
|
([data opts]
|
||||||
|
(let [routes (resolve-routes data opts)]
|
||||||
|
(if (some regex/contains-wilds? (map first routes))
|
||||||
(->LinearRouter
|
(->LinearRouter
|
||||||
(for [[p m] (resolve-routes data opts)]
|
(for [[p m] routes]
|
||||||
[p m (regex/matcher p)]))))
|
[p m (regex/matcher p)]))
|
||||||
|
(->LookupRouter
|
||||||
|
(into {} routes))))))
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,26 @@
|
||||||
(ns reitit.core-test
|
(ns reitit.core-test
|
||||||
(:require [clojure.test :refer [deftest testing is are]]
|
(:require [clojure.test :refer [deftest testing is are]]
|
||||||
[reitit.core :as reitit]))
|
#?(:clj [reitit.core :as reitit]
|
||||||
|
:cljs [reitit.core :as reitit :refer [LinearRouter LookupRouter]]))
|
||||||
|
#?(:clj
|
||||||
|
(:import (reitit.core LinearRouter LookupRouter))))
|
||||||
|
|
||||||
(deftest reitit-test
|
(deftest reitit-test
|
||||||
|
|
||||||
|
(testing "linear router"
|
||||||
|
(let [router (reitit/router ["/api"
|
||||||
|
["/ipa"
|
||||||
|
["/:size"]]])]
|
||||||
|
(is (instance? LinearRouter router))
|
||||||
|
(is (map? (reitit/match-route router "/api/ipa/large")))))
|
||||||
|
|
||||||
|
(testing "lookup router"
|
||||||
|
(let [router (reitit/router ["/api"
|
||||||
|
["/ipa"
|
||||||
|
["/large"]]])]
|
||||||
|
(is (instance? LookupRouter router))
|
||||||
|
(is (map? (reitit/match-route router "/api/ipa/large")))))
|
||||||
|
|
||||||
(testing "bide sample"
|
(testing "bide sample"
|
||||||
(let [routes [["/auth/login" :auth/login]
|
(let [routes [["/auth/login" :auth/login]
|
||||||
["/auth/recovery/token/:token" :auth/recovery]
|
["/auth/recovery/token/:token" :auth/recovery]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue