mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 00:11:11 +00:00
commit
2b57426929
2 changed files with 30 additions and 4 deletions
|
|
@ -69,10 +69,19 @@
|
|||
(reduced (assoc m :route-params params))))
|
||||
nil routes)))
|
||||
|
||||
(defrecord LookupRouter [routes]
|
||||
Routing
|
||||
(match-route [_ path]
|
||||
(routes path)))
|
||||
|
||||
(defn router
|
||||
([data]
|
||||
(router data {}))
|
||||
([data opts]
|
||||
(->LinearRouter
|
||||
(for [[p m] (resolve-routes data opts)]
|
||||
[p m (regex/matcher p)]))))
|
||||
(let [routes (resolve-routes data opts)]
|
||||
(if (some regex/contains-wilds? (map first routes))
|
||||
(->LinearRouter
|
||||
(for [[p m] routes]
|
||||
[p m (regex/matcher p)]))
|
||||
(->LookupRouter
|
||||
(into {} routes))))))
|
||||
|
|
|
|||
|
|
@ -1,9 +1,26 @@
|
|||
(ns reitit.core-test
|
||||
(: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
|
||||
|
||||
(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"
|
||||
(let [routes [["/auth/login" :auth/login]
|
||||
["/auth/recovery/token/:token" :auth/recovery]
|
||||
|
|
|
|||
Loading…
Reference in a new issue