diff --git a/advanced/configuring_routers.html b/advanced/configuring_routers.html index a37757a1..4cebd15a 100644 --- a/advanced/configuring_routers.html +++ b/advanced/configuring_routers.html @@ -512,7 +512,7 @@ diff --git a/advanced/different_routers.html b/advanced/different_routers.html index b594947b..764a893d 100644 --- a/advanced/different_routers.html +++ b/advanced/different_routers.html @@ -511,7 +511,7 @@ diff --git a/advanced/index.html b/advanced/index.html index 5ad13044..a9c4addf 100644 --- a/advanced/index.html +++ b/advanced/index.html @@ -474,7 +474,7 @@ diff --git a/advanced/route_validation.html b/advanced/route_validation.html index e22afd19..8d083941 100644 --- a/advanced/route_validation.html +++ b/advanced/route_validation.html @@ -623,7 +623,7 @@ diff --git a/basics/index.html b/basics/index.html index 24a8a2a7..b272c030 100644 --- a/basics/index.html +++ b/basics/index.html @@ -477,7 +477,7 @@ diff --git a/basics/name_based_routing.html b/basics/name_based_routing.html index 8dc4b1df..05f445a3 100644 --- a/basics/name_based_routing.html +++ b/basics/name_based_routing.html @@ -518,7 +518,7 @@ diff --git a/basics/path_based_routing.html b/basics/path_based_routing.html index b03399b0..016d5bde 100644 --- a/basics/path_based_routing.html +++ b/basics/path_based_routing.html @@ -496,7 +496,7 @@ diff --git a/basics/route_conflicts.html b/basics/route_conflicts.html index 1e66dd48..d1c86a28 100644 --- a/basics/route_conflicts.html +++ b/basics/route_conflicts.html @@ -513,7 +513,7 @@ diff --git a/basics/route_data.html b/basics/route_data.html index 7be45429..0db87cee 100644 --- a/basics/route_data.html +++ b/basics/route_data.html @@ -547,7 +547,7 @@ diff --git a/basics/route_syntax.html b/basics/route_syntax.html index d723434c..6e0f77ba 100644 --- a/basics/route_syntax.html +++ b/basics/route_syntax.html @@ -526,7 +526,7 @@ diff --git a/basics/router.html b/basics/router.html index 25c60d40..9cf11e57 100644 --- a/basics/router.html +++ b/basics/router.html @@ -506,7 +506,7 @@ diff --git a/index.html b/index.html index b6114e1c..5fd84db1 100644 --- a/index.html +++ b/index.html @@ -577,7 +577,7 @@ diff --git a/performance.html b/performance.html index ba8f81a1..d6572b37 100644 --- a/performance.html +++ b/performance.html @@ -438,12 +438,6 @@
Some things related to performance:
-:mixed-router can be created, which collects all non-wildcard routes into a separate fast subrouter.Well, it depends. Some tested routing libs seem to spend more time resolving the routes than it takes to encode & decode a 1k JSON payload. For busy sites, this actually matters.
Based on some quick perf tests, the first lookup is two orders of magnitude faster than other tested Clojure routing libraries. The second lookup is 3-18x faster.
-But, most micro-benchmarks lie. For example, Pedestal is always matching the :request-method which means it does more work. With real life routing trees, the differences are most likely more subtle, or some other lib might be actually faster.
Based on some quick perf tests, the first (static path) lookup is 300-500x faster and the second (wildcard path) lookup is 4-24x faster that the other tested routing libs (ataraxy, bidi, compojure and pedestal).
+But, one shoudn't trust the benchmarks. Many libraries (here: compojure, pedestal and ataraxy) always match also on the request-method so they do more work. Also, real-life routing tables might look different and different libs might behave differently.
+But, the perf should be good.
+Real value of perf tests is to get a internal baseline to optimize against. Also, to ensure that new features don't regress the performance.
It might be interesting to look out of the box and compare the fast Clojure routing libs to routers in other languages, like the routers in Go.
-Currently, the non-wildcard routes are already really fast to match, but wildcard routes use only a naive linear scan. Plan is to add a optimized Trie-based router. See -httprouter and Pedestal for details.
-PRs welcome.
+Few things that have an effect on performance:
+:mixed-router can be created, which internally has a fast static path router and a separate wildcard-router. So, the static paths are still fast.The dynamic extensions is a easy way to extend the system. To enable fast lookups into route data, we can compile them into any shape (records, functions etc.) we want, enabling fast access at request-time.
-Still, we can do better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. Middleware/interceptor can also decide not to mount itself. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?
To enable this we use middleware records :gen hook instead of the normal :wrap. :gen expects a function of route-meta router-opts => wrap. Middleware can also return nil, which effective unmounts the middleware.
To demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen. These are the actual codes are from reitit.ring.coercion:
Still, we can do much better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. It can also decide not to mount itself by returning nil. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?
To enable this we use middleware records :gen-wrap key instead of the normal :wrap. :gen-wrap expects a function of route-meta router-opts => ?wrap.
To demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen-wrap. Actual codes can be found in reitit.ring.coercion:
(defn wrap-coerce-response
"Pluggable response coercion middleware.
@@ -468,23 +468,25 @@
Pre-compiled coercers
Mounts only if :coercion and :responses are defined for the route
-(def gen-wrap-coerce-response
+(require '[reitit.ring.middleware :as middleware])
+
+(def gen-wrap-coerce-response
"Generator for pluggable response coercion middleware.
Expects a :coercion of type `reitit.coercion.protocol/Coercion`
and :responses from route meta, otherwise does not mount."
(middleware/create
{:name ::coerce-response
- :gen (fn [{:keys [responses coercion opts]} _]
- (if (and coercion responses)
- (let [coercers (response-coercers coercion responses opts)]
- (fn [handler]
- (fn
- ([request]
- (coerce-response coercers request (handler request)))
- ([request respond raise]
- (handler request #(respond (coerce-response coercers request %)) raise)))))))}))
+ :gen-wrap (fn [{:keys [responses coercion opts]} _]
+ (if (and coercion responses)
+ (let [coercers (response-coercers coercion responses opts)]
+ (fn [handler]
+ (fn
+ ([request]
+ (coerce-response coercers request (handler request)))
+ ([request respond raise]
+ (handler request #(respond (coerce-response coercers request %)) raise)))))))}))
-The :gen -version has 50% less code, is easier to reason about and is twice as faster on basic perf tests.
+The latter has 50% less code, is easier to reason about and is much faster.
@@ -528,7 +530,7 @@
diff --git a/ring/data_driven_middleware.html b/ring/data_driven_middleware.html
index 63fff315..c4af4f69 100644
--- a/ring/data_driven_middleware.html
+++ b/ring/data_driven_middleware.html
@@ -426,7 +426,15 @@
Data-driven Middleware
-Reitit supports first-class data-driven middleware via reitit.ring.middleware/Middleware records, created with reitit.ring.middleware/create function. The following keys have special purpose:
+Ring defines middleware as a function of type handler & opts => request => response. It's easy to undrstand and enables great performance, but makes the middleware-chain opaque, making things like documentation and debugging hard.
+Reitit does things bit differently:
+
+- middleware is defined as a vector (of middleware) enabling the chain to be malipulated before turned into the optimized runtime chain.
+- middleware can be defined as first-class data entries
+
+Middleware as data
+Everything that is defined inside the :middleware vector in the route data is coerced into reitit.ring.middleware/Middleware Records with the help of reitit.ring.middleware/IntoMiddleware Protocol. By default, it transforms functions, maps and Middleware records. For the actual
+Records can have arbitrary keys, but the default keys have a special purpose:
@@ -437,38 +445,81 @@
:name
-Name of the middleware as qualified keyword (optional,recommended for libs)
+Name of the middleware as a qualified keyword (optional)
:wrap
-The actual middleware function of handler args? => request => response
+The actual middleware function of handler & args => request => response
-:gen
-Middleware compile function, see compiling middleware.
+:gen-wrap
+Middleware function generation function, see compiling middleware.
-When routes are compiled, all middleware are expanded (and optionally compiled) into Middleware Records and stored in compilation results for later use (api-docs etc). For actual request processing, they are unwrapped into normal middleware functions and composed together producing zero runtime performance penalty. Middleware expansion is backed by reitit.middleware/IntoMiddleware protocol, enabling plain clojure(script) maps to be used.
-A Record:
-(require '[reitit.middleware :as middleware])
+Middleware Records are accessible in their raw form in the compiled route results, thus available for inventories, creating api-docs etc.
+For the actual request processing, the Records are unwrapped into normal functions, yielding zero runtime penalty.
+Creating Middleware
+The following produce identical middleware runtime function.
+Function
+(defn wrap [handler id]
+ (fn [request]
+ (handler (update request ::acc (fnil conj []) id))))
+
+Record
+(require '[reitit.ring.middleware :as middleware])
(def wrap2
(middleware/create
{:name ::wrap2
- :description "a nice little mw, takes 1 arg."
+ :description "Middleware that does things."
:wrap wrap}))
-As plain map:
-;; plain map
-(def wrap3
+Map
+(def wrap3
{:name ::wrap3
- :description "a nice little mw, :api as arg"
- :wrap (fn [handler]
- (wrap handler :api))})
+ :description "Middleware that does things."
+ :wrap wrap})
-TODO
-more!
+Using Middleware
+(require '[reitit.ring :as ring])
+
+(defn handler [{:keys [::acc]}]
+ {:status 200, :body (conj acc :handler)})
+
+(def app
+ (ring/ring-handler
+ (ring/router
+ ["/api" {:middleware [[wrap 1] [wrap2 2]]}
+ ["/ping" {:get {:middleware [[wrap3 3]]
+ :handler handler}}]])))
+
+All the middleware are called correctly:
+(app {:request-method :get, :uri "/api/ping"})
+; {:status 200, :body [1 2 3 :handler]}
+
+Future
+Some things bubblin' under:
+
+- Hooks to manipulate the
:middleware chain before compilation
+- Support
Keyword expansion into Middleware, enabling external Middleware Registries (duct/integrant/macchiato -style)
+- Support Middleware dependency resolution with new keys
:requires and :provides. Values are set of top-level keys of the request. e.g.
+InjectUserIntoRequestMiddleware requires #{:session} and provides #{:user}
+AuthorizationMiddleware requires #{:user}
+
+
+- Support partial
s/keys route data specs with Middleware (and Router). Merged together to define sound spec for the route data and/or route data for a given route.
+- e.g.
AuthrorizationMiddleware has a spec defining :roles key (a set of keywords)
+- Documentation for the route data
+- Route data is validated against the spec:
+- Complain of keywords that are not handled by anything
+- Propose fixes for typos (Figwheel-style)
+
+
+
+
+
+Ideas welcome & see issues for details.
@@ -512,7 +563,7 @@
diff --git a/ring/dynamic_extensions.html b/ring/dynamic_extensions.html
index e7032da4..de00e016 100644
--- a/ring/dynamic_extensions.html
+++ b/ring/dynamic_extensions.html
@@ -504,7 +504,7 @@
diff --git a/ring/index.html b/ring/index.html
index beb729c1..617fce57 100644
--- a/ring/index.html
+++ b/ring/index.html
@@ -476,7 +476,7 @@
diff --git a/ring/parameter_coercion.html b/ring/parameter_coercion.html
index 153358aa..6dadde01 100644
--- a/ring/parameter_coercion.html
+++ b/ring/parameter_coercion.html
@@ -549,7 +549,7 @@
diff --git a/ring/ring.html b/ring/ring.html
index 752386bb..c0cc6836 100644
--- a/ring/ring.html
+++ b/ring/ring.html
@@ -566,7 +566,7 @@
diff --git a/search_index.json b/search_index.json
index 66151d13..934122c3 100644
--- a/search_index.json
+++ b/search_index.json
@@ -1 +1 @@
-{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"0.1.0","\"1\"}","\"ok\",","\"ok\"})","#match{:templ","#methods{...}","#object[user$handler]}","#partialmatch{:templ","#{:id}}","&","'())","'[reitit.cor","'[reitit.r","(","(:api","(app","(clojure.spec)","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":get",":get,",":handler",":meta",":middlewar",":name",":param",":path",":post",":put,",":request",":requir",":result",":uri",":user/ord",":wrap",";",">","[\"/admin\"","[\"/api\"","[\"/api/orders/:id\"","[\"/ping\"","[\"/users\"","[[\"/api/ping\"","[[#object[user$wrap]","[[wrap","[_]","[handler","[metosin/reitit","[request]","add","app","base","bi","both","class","clojure(script)","coercion","compilation,","conflict","conj","core","data","dependeci","direct","driven","dynam","exampl","extend","extens","fast","first","follow","functions,","handler","handler}]]])))","id","id)","id))","id)))","id]","id]]))","id}","id},","interceptor","introduct","librari","match?","meta","method","method.","middlewar","middleware,","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","separately:","simpl","small","snapshot\"]","spec","support","syntax","true","us","wrap","{:get","{:handler","{:id","{:middlewar","{:name","{:request","{:statu","{}"],"basics/":["base","basic","conflict","data","name","path","rout","router","syntax"],"basics/route_syntax.html":["\"/\"","'add","'get","(*path).","(:id)","([\"/get","(condp","(cqr","(defn","(for","(if","(name","(non","(str","::admin]","::admin}]","::db]]","::db]}","::db}]","::dev","::ping]","::ping]]","::ping}]]","::pong}]]",":command",":get",":let",":name",":post)]]",":queri",";","=","[\"\"","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/ping\"","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public/*path\"]","[::admin],","[::admin]}","[::api","[:command","[[\"/api/admin\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[:queri","[[type","[action","[add","[get","[interceptor]}}])","[path","action","argument","arguments:","catch","child","cqr","creat","data,","defin","dev","easi","exampl","false)","flattened:","gener","id\"]","ignored.","interceptor))","interceptor]","it'","list","method","mode?","mode?]","nest","nil","nil]","option","order\"","order]]","order]}}])","paramet","parameter:","parameters:","path","programmatically:","rout","route:","routes.","routes:","same","sequential)","simpl","string","syntax","tools\"","tools])])","two","type","user\"","user]","user]}}]","vector","wrap","{:get","{:interceptor","{:middlewar","{:name","{:post","{method"],"basics/router.html":["'[reitit.cor","(def","(defprotocol","(match","(option","(r/rout","(r/router","(requir","(rout","(router","(via","::ping]","::user]]]))",":a",":mix",":user/ping}]",":user/user}]]",";","[\"/api/user/:id\"","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","[[\"/api/ping\"","[thi","[this])","actual","argument","behind","coerc","compil","conflict","creat","created,","data","done:","expand","flatten","follow","function,","get","implement","instanc","map.","meta","name","name]","need","option","params]))","path","path])","protocol)","protocol.","protocol:","r])","raw","reitit.core/expand","reitit.core/rout","resolv","rout","router","router)","router:","routing,","satisfi","scene","select","step","take","tree","tree:","{:name"],"basics/path_based_routing.html":["\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/hello\")","\"1\"}}","#match{:templ","'[reitit.cor","(def","(onli","(r/match","(r/router","(requir","::ping]","::user]]]))",":a",":meta",":param",":path",":result",":user/user}",";","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","argument","base","done","exact","following:","function.","given","information:","match","match,","matched,","miss","nil","nil,","nil:","on","paramet","partialmatch,","path","provid","r])","reitit.core/match","return","revers","rout","router","router:","routing)","take","us","{:id","{:name"],"basics/name_based_routing.html":["\"/api/ping\"","\"/api/ping\"}","\"/api/user/1\"","\"/api/user/:id\"","\"/api/user/:id\",","\"1\"})","\"1\"}}","#match{:templ","#partialmatch{:templ","#{:id}","#{:id}}","'[reitit.cor","(def","(r/match","(r/partial","(r/rout","(r/router","(requir","(reverse)","/api/user/:id:","::kikka)","::ping)","::ping]","::user","::user)","::user))","::user]]]))",":a",":meta",":name",":param",":path",":requir",":result",":user/ping}",":user/user]",":user/user}",":user/user},",";","[\"/ping\"","[\"/user/:id\"","[:user/p","[[\"/api\"","base","data","defined,","except","exceptioninfo","given","list","match","match?","miss","name","name!","name.","names:","nil","nil,","nil:","param","paramet","parameters:","partialmatch","path","provid","r])","return","returned:","rout","route:","router","router)","router:","set,","throw","true","version:","{:id","{:name","{}"],"basics/route_data.html":["\"/ping\"","\"/ping\")","\"/ping\"}","#match{:templ","#{:admin}","#{:admin}}","#{:db","'[reitit.cor","(def","(r/match","(r/rout","(r/router","(requir","::db]","::ping)","::ping]","::users]","::users}",":a",":append,",":coerc",":compil",":displac",":handler",":meta",":name",":param",":path",":prepend,",":replac",":result",":role",":user/ping}",":user/ping}]",";","[\"/admin\"","[\"/api\"","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/db\"","[\"/ping\"","[\"/pong\"","[\"/users\"","[::api","[::api]","[::api]}","[::db]","[[\"/api/ping\"","[[\"/ping\"","^:replac","accumul","adapt","add","admin}}]]","admin}}]]]))","applic","argument","arguments.","attacht","behavior","both","case","cheng","client","co","colect","components.","created.","custom","data","data.","data:","default","default,","easi","enabl","exampl","exist","expand","expans","function","heart","hooks.","identity]","identity]}","identity}}]]","identity}}]]))","implement","interpet","it'","key","keyword","leaf","library.","map","map.","match","match.","merge.","meta","name","nest","nil","nil]","non","on","options.","overridden","path","principl","protocol","r])","recurs","reitit/expand","resolv","retriev","return","root","rout","router","router)","sequenti","target","them.","toward","tree:","trees,","us","via","whole","{:get","{:handler","{:interceptor","{:name","{:role","{}"],"basics/route_conflicts.html":["'[reitit.cor","(comp","(def","(r/router","(requir","/:user","/:version/statu","/bulk/:bulk","/public/*path",":a",":conflict",";",">","[\"/:user","[\"/:version/status\"]])","[\"/bulk/:bulk","[\"/public/*path\"]","[[\"/ping\"]","allow","callback.","called.","clojure.lang.exceptioninfo:","compilerexcept","conflicit","conflict","conflicts:","contain","default","default,","descript","effec","especi","ex","exampl","exceptioninfo","explicit","first","good,","id","id\"]","id/ord","id/orders\"]","implement","info","librari","log","lookup.","mani","match","merg","message.","multipl","pass","path","println","r])","reitit","reitit/conflict","resolut","resolv","rest","rout","router","routes)","routes:","run","singl","sources.","str)})","throw","thrown:","tree","unreachanle.","us","usually,","{:conflict"],"advanced/":["advanc","configur","differ","rout","router","valid"],"advanced/configuring_routers.html":["#{route}}","(default",":coerc",":compil",":conflict",":expand",":meta",":path",":rout",":router","=>","[])","actual","allow","arg","avail","base","clojure.spec","coerc","compil","configur","conflict","conflicts!)","data","descript","effect","expand","fast,","follow","function","handl","handler","handlers.","implement","initi","key","meta","nil","opt","option","options.","overrid","path","reitit.core/expand)","reitit.core/router:","reitit.core/throw","resolv","result","return","rout","route,","router","side","thing","throw","valid","vector","via","{rout"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::singl","::users]]))",":a",":linear",":lookup",":mix",":prefix",":router",";","[\"/api/:users\"","[[\"/ping\"","ask","base","best","both","catch","configur","conflicts.","creat","descript","differ","effect","expand","fast","faster","found.","function","hash","implement","implementation.","inspect","intern","kind","lookup","manual","match","much","name","on","option,","origin","out","paramet","path","pedest","prefix","protocol,","r])","reitit","resolv","rout","route.","router","router)","router,","router.","router:","routers.","routes.","see","select","set","sever","ship","slow,","start","static","sting","suitabl","super","table.","top","tree","trees.","until","us","valid","work","worlds."],"advanced/route_validation.html":["\"/\"))","\"/\")))","\"/\"))))","\"0.3.0\"]","\"1.9.0","\"1.9.660\"]","\"tenant1\"","#'reitit.core/rout","%","%)","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[expound.alpha","'[reitit.cor","'[reitit.spec","'[reitit.spec])","(*","(?","([\"/api\"","([...","(and","(blank?","(cat","(clojure.core/fn","(clojure.core/or","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(def","(fn","(if","(nilabl","(or","(r/router","(requir","(s/explain","(s/valid?","(set!","(start","(stest/instru","...","...])","1.8","2","::spec/raw","::tenant1])",":a",":arg",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":dev",":into",":path",":path]",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":rout",":user/tenant1",":user/tenant1]",";","[\"/api\"","[\"/ping\"]","[\"/public\"","[\"pong\"]]])","[\"tenant1\"","[%]","[...","[0]","[1]","[:rout","[:routes]","[]))","[clojur","[expound","[org.clojure/clojur","[org.clojure/clojurescript","^^^^^^","`reitit/router)","add","alpha17\"]","argument","at:","bootstrapping:","call","clojur","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","compilerexcept","conform","contain","data","db","db)","definit","depend","detect","develop","error","exampl","expound","expound/printer)","expound])","fail","fals","first","following:","function","futur","go:","higher","higher)","in:","instrument","namespac","note:","on","options.","out*","predicate:","pretti","print","problems.","r])","raw","rc1\"]","readi","reitit.core/rout","reitit.spec","relev","requir","rout","route))))","route:","router","routes,","routes:","s/*explain","s])","satisfi","someth","spec","spec:","spec])","stest])","time","to:","todo","us","used)","val:","valid","with?"],"ring/":["coercion","compil","data","driven","dynam","extens","middlewar","paramet","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:meta","#methods{:ani","#object[...],","#object[...]}","#object[...]},","%","&","'[reitit.r","(","(app","(conj","(constantli","(def","(defn","(fn","(fnil","(handler","(reitit/match","(reitit/routes))","(requir","(ring/get","(ring/r","(ring/rout","(some","(updat","2","200,","3","404}","404})))","::acc","::ping","::ping)",":a",":admin",":admin]]}",":api)]}",":bodi",":db",":db]]",":delet",":delete,",":delete]]",":get",":get,",":handler",":handler)})",":handler]}",":head,",":middlewar",":options,",":patch,",":path)",":post",":put,",":put.",":request",":uri",";",">","?arg","[\"/admin\"","[\"/api\"","[\"/db\"","[\"/ping\"","[#(wrap","[::acc]}]","[:api","[[\"/ping\"","[[wrap","[])","[]}}]]","[_]","[handler","[request]","[{:key","acc","ad","add","app","app:","appli","args.","ariti","async","base","both","built","chain","clojur","clojurescript,","compil","compiler,","conj","correctly:","creat","custom","defined.","element","enabl","ensur","error","expand","fn","following:","found","found.","function","function.","handl","handler","handler:","handler]","handler]))","handler])))","handlers,","handler}])))","handler}}]]])))","id))))","id]","it'","key,","keys:","level","look","match,","matches,","messages:","method","method.","methods.","middlewar","middleware:","name","nest","nil","node.j","normal","note","optim","optin","provid","reitit.ring/rout","request","respons","results:","resut","returned,","revers","ring","ring.","ring])","rout","router","router)","routing:","run","show","simpl","stuctur","submap.","support","third","too.","top","under","understood","us","valu","vector","vector.","work","wrap","{:handler","{:middlewar","{:name","{:request","{:statu","{:uri"],"ring/dynamic_extensions.html":["\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/ping\"})","\"forbidden\"}","\"ok\"}","\"ok\"}))","#{:admin}}","#{:admin}})","'[clojure.set","(and","(app","(constantli","(def","(defn","(effect","(fn","(handler","(if","(let","(not","(requir","(ring/get","(ring/r","(ring/rout","(seq","(set/subset?","(some","200,","403,","::role","::roles)]",":a",":bodi",":get,",":meta",":uri",";",">","[\"/admin\"","[\"/ping\"","[::roles]","[[\"/api\"","[handler]","[requir","[wrap","[{:key","access","ad","anonym","app","author","base","build","data","dynam","enforc","exampl","extens","extract","guard","handler","handler]","handler]]]]","hoc","inject","match","match)","match.","meta","method","middlewar","mount","public","reitit.ring/get","request","request)))))","request}]","requir","required)","ring","role","roles)))","roles:","roles]}})))","rout","route:","router","routes):","runtim","set])","system.","us","user","via","wrap","{::role","{:meta","{:middlewar","{:request","{:statu"],"ring/data_driven_middleware.html":["\"a","'[reitit.middlewar","(and","(api","(def","(fn","(middleware/cr","(optional,recommend","(requir","(wrap","1","::wrap2","::wrap3",":a",":api",":api))})",":descript",":gen",":name",":wrap",";;","=>","[handler]","actual","arg\"","arg.\"","args?","back","class","clojure(script)","compil","compiled)","compiled,","compos","creat","data","descript","doc","driven","enabl","etc).","expand","expans","first","follow","function","function,","function.","handler","key","keyword","later","libs)","littl","map","map:","middlewar","middleware.","middleware])","more!","mw,","name","nice","normal","option","penalty.","perform","plain","processing,","produc","protocol,","purpose:","qualifi","record","record:","records,","reitit","reitit.middleware/intomiddlewar","reitit.ring.middleware/cr","reitit.ring.middleware/middlewar","request","respons","result","rout","runtim","see","special","store","support","take","todo","togeth","unwrap","us","used.","via","wrap2","wrap3","wrap}))","zero","{:name"],"ring/parameter_coercion.html":["\"/api/ping\"","\"0.1.123\"]","\"0.4.0\"]","\"1.9.0","\"everyth","&","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[spec","(+","(app","(def","(fn","(or","(recommend","(requir","(ring/r","(ring/rout","(s/def","(s/key","(st/spec","/","1,","1.9.0","200","200,","2}})","3}}","::i","::request","::request}","::respons","::response}}","::total","::x","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":form,",":get",":header",":paramet",":parameters.",":parameters}]",":path.",":query,",":req",":respons",":schema",":uri",":y",";","[\"/api\"","[\"/ping\"","[::total]))","[::x","[coercion/gen","[metosin/spec","[org.clojure/clojur","[org.clojure/spec.alpha","[x","[{{{:key","add","adopt","api.","app","befor","beta2\"]","clojur","clojure.spec","code","coerc","coercion","coercion,","coercion.","coercion/gen","coercion])","compojur","conforming,","currently,","data","data,","defin","defined):","depend","descript","differ","doesn't","else\")","error","exampl","fails,","follow","following:","format","gen","handler","implemen","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","key","manual","map","map,","meta","method","middlewar","mount","need","note:","on","option","origin","param","paramet","parameters/gen","parameters:","pluggabl","po","project:","protocol,","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","request","respons","response]","ring","ring,","ring])","rout","router","runtim","s])","ship","shipped,","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","thrown.","tool","tools.cor","tools.core/spec.","transform","un","under","understood","us","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:handler","{:meta","{:middlewar","{:paramet","{:request","{:schema","{:statu","{:total","{:x"],"ring/compiling_middleware.html":["\"gener","\"pluggabl","#(respond","%))","%))))","(","(:request","([request","([request]","(and","(coerc","(compiled)","(def","(defn","(fn","(handler","(if","(let","(middleware/cr","(records,","(respons","(ring/get","50%","::coerc",":coercion",":coercion)",":gen",":gen.",":meta",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","[coercer","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","basic","below","better.","closur","code","code,","coerc","coercer","coercion","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","effect","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","function","gen","handler","hook","inform","instead","it?","itself.","know","less","link","local","lookup","match","meta","meta,","method","middlewar","middleware.","middleware/interceptor","mount","mount.\"","much","naiv","nil,","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","perf","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","reason","reasoning:","record","reitit.ring.coercion:","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","still,","system.","tests.","time.","to,","transform","twice","two","type","unmount","us","version","via","want,","way","wrap","wrap.","written","yield","{:name"],"performance.html":["\"/auth/login\")))","\"/workspace/1/1\")))","&","'[criterium.cor","'[reitit.cor","(cc/quick","(def","(dotim","(matches,","(micro","(r/match","(r/router","(requir",")benchmark","1.4m","1000]","18x","1k","2013","286m","3","3.488297","692.905995",":",":a",":auth/login]",":auth/recovery]",":mix",":request",":workspace/page]]))",";;","=>",">","[\"/auth/recovery/token/:token\"","[\"/workspace/:project/:page\"","[[\"/auth/login\"","[_","abstract","actual","add","adopt","against.","algorithms,","alreadi","also,","alway","avoid","base","baselin","bench","benchmark","bide","both","box","busi","but,","cc])","clojur","clojure(script),","collect","compar","conflict","created,","currently,","decod","depends.","details.","differ","disabl","don't","enabl","encod","ensur","exampl","example,","execut","fast","fast.","faster","faster.","featur","first","flatten","found,","function","given","go.","good?","great","guid","httprouter","immut","inlin","interest","intern","it'","json","jvm","languages,","late","lib","librari","libraries.","lie.","life","linear","long","look","lookup","macbook","magnitud","manag","mani","map","match","match,","matter?","matters.","mean","measur","method","micro","middleware,","mix","more","mostli","much","multimethod","multipl","mutabl","naiv","new","non","ok","ops/sec","optim","order","origin","out","over","path","payload.","pedest","pedestal,","perf","perf.","perform","performance.","performance:","plan","possibl","pr","precompute/compil","pro,","profile:","protocol","quick","r])","rational","re","readme,","real","realli","record","regress","reitit","relat","resolut","resolv","rewritten.","roadmap","rout","router","router.","routes)","run","same","sampl","scan.","second","see","seem","select","separ","sites,","slower","small","spend","subrouter.","subtle,","take","taken","test","test?","tests,","thing","time","tree","trees,","tri","trie","trust","two","us","valu","welcome.","well,","wildcard","work.","µs"]},"length":19},"tokenStore":{"root":{"1":{"0":{"0":{"0":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}},"docs":{}},"docs":{}},"8":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},".":{"4":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"8":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"9":{"docs":{},".":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"docs":{}}},"docs":{}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},",":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"1":{"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"docs":{}},"docs":{}},"8":{"6":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"docs":{}},"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"3":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"4":{"8":{"8":{"2":{"9":{"7":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"4":{"0":{"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}},"4":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"docs":{}},"docs":{}},"5":{"0":{"docs":{},"%":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},"docs":{}},"6":{"9":{"2":{"docs":{},".":{"9":{"0":{"5":{"9":{"9":{"5":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{},"\"":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}},"1":{"2":{"3":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"docs":{}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"4":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}},".":{"9":{"docs":{},".":{"0":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"1":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},"\"":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"b":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{},"}":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}}},"#":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},"{":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"]":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"d":{"docs":{},"b":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}},"'":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"{":{"docs":{},":":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"(":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01818181818181818}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"i":{"docs":{},"d":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}},"o":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"n":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012121212121212121}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012121212121212121}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015151515151515152}}}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.043478260869565216},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"[":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"e":{"docs":{},"t":{"docs":{},"!":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"/":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"?":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"v":{"docs":{},"i":{"docs":{},"a":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015151515151515152}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},"+":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},":":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.017094017094017096}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"c":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"d":{"docs":{},"b":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"s":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"k":{"docs":{},"i":{"docs":{},"k":{"docs":{},"k":{"docs":{},"a":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}}}}},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"docs":{}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"p":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},")":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01729106628242075}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}}},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012121212121212121}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"]":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01818181818181818}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}}}}},"x":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0389908256880734}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},"e":{"docs":{},"r":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"]":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.022900763358778626}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"e":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},";":{"docs":{"./":{"ref":"./","tf":0.11396011396011396},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.075},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.13043478260869565},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.10135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.17391304347826086},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.2545871559633027},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},";":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}},">":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.057971014492753624},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01818181818181818},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}},"[":{"0":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"1":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}},":":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"/":{"docs":{},":":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}}},"[":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"u":{"docs":{},"s":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}},"#":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}}}}},":":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"_":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"i":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}},":":{"docs":{},":":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"p":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{},"c":{"docs":{},"]":{"docs":{},"}":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"d":{"docs":{},"b":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"p":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"%":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{},"(":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"a":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"advanced/":{"ref":"advanced/","tf":10.142857142857142}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"r":{"docs":{},"o":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}}},"i":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"u":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"?":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},".":{"docs":{},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}},"p":{"docs":{},"h":{"docs":{},"a":{"1":{"7":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}}}},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"s":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"g":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.14285714285714285},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.358333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3405797101449273},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"i":{"docs":{},"c":{"docs":{"basics/":{"ref":"basics/","tf":10.071428571428571},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"c":{"docs":{},"k":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"d":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"t":{"docs":{},"a":{"2":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"o":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.023054755043228},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03636363636363636}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.024242424242424242}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.022900763358778626},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015151515151516}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"d":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"s":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"!":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}}}}},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"d":{"docs":{},"e":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"s":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.030405405405405},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.348600508905852},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"c":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.014814814814815},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.348600508905852}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.00709219858156},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}}}}},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"e":{"docs":{},"x":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"c":{"docs":{},"t":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.01418439716312},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"t":{"docs":{},"c":{"docs":{},")":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},".":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061},"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"l":{"docs":{},"s":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},".":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}},"s":{"docs":{},".":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}}}}}}}}}}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"./":{"ref":"./","tf":10.002849002849002}}}}}}}},"?":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"f":{"docs":{},"o":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"r":{"docs":{},"m":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"g":{"docs":{},"n":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"t":{"docs":{},"'":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}},"?":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"y":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"s":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"t":{"docs":{},"t":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083}}}}},"n":{"docs":{},"k":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"f":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"e":{"docs":{},"a":{"docs":{},"f":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}},"s":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"o":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"o":{"docs":{},"k":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"n":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030303030303030304},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"?":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"p":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"a":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"c":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015151515151515152},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"e":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}},"a":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/":{"ref":"ring/","tf":0.16666666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":0.025280898876404494},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.402035623409669},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.0212121212121215}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}},"]":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"!":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"d":{"docs":{},"e":{"docs":{},"?":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"s":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"w":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05309734513274336},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3840579710144922},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"!":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"i":{"docs":{},"v":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"c":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.013157894736842105}}},"t":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"d":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"m":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.013157894736842105}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"w":{"docs":{},"i":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.025936599423631}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.023668639053254437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.433333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}},"s":{"docs":{},"s":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}},"y":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.022900763358778626}}}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"l":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"a":{"docs":{},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}},"r":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"performance.html":{"ref":"performance.html","tf":10.009868421052632}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}},"o":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.02727272727272727}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015151515151515152}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"v":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.020172910662824207},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.045454545454545456}},"e":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"s":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}}},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}},"l":{"docs":{},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},"a":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/":{"ref":"ring/","tf":10.166666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":5.019662921348314},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.35714285714285715},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.0828402366863905},"basics/router.html":{"ref":"basics/router.html","tf":0.061946902654867256},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.370833333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.369565217391304},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.050675675675675},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.043478260869565},"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.11224489795918367},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.044444444444444446},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.032110091743119},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030303030303030304},"performance.html":{"ref":"performance.html","tf":0.0756578947368421}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.039886039886039885},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.079646017699115},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.050724637681159424},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.037162162162162164},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812},"advanced/":{"ref":"advanced/","tf":0.2857142857142857},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.111111111111111},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":5.008426966292135},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}},"s":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.021739130434782608},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}}},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},":":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}},"o":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"u":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"]":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"e":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}},"d":{"docs":{},"e":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"\"":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"b":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.005917159763314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"e":{"docs":{},"p":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}},"u":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"l":{"docs":{},"l":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"a":{"docs":{},"n":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"o":{"docs":{},"w":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"a":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"/":{"docs":{},"*":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"e":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.006578947368421052}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"s":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},")":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"d":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},"w":{"docs":{},"o":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"r":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"s":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.009868421052631578}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}},"d":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}},"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00909090909090909}},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.023026315789473683}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.03550295857988166},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},":":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}},"=":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},">":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},"e":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}}}},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}}}},"v":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"i":{"docs":{},"a":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.02962962962962963},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.004587155963303}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"u":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.003289473684210526}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"/":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}},"^":{"docs":{},":":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015267175572519083},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}},"%":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"`":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"`":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006060606060606061}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"?":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.007633587786259542}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"y":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}}}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030303030303030303}}}},")":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003289473684210526}}}}},"v":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}},"µ":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006578947368421052}}}}},"length":1986},"corpusTokens":["\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/api/admin/db\"})","\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"/api/ping\"})","\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/api/user/:id\",","\"/auth/login\")))","\"/favicon.ico\"})","\"/hello\")","\"/invalid\"})","\"/ping\"","\"/ping\")","\"/ping\"}","\"/ping\"})","\"/workspace/1/1\")))","\"0.1.0","\"0.1.123\"]","\"0.3.0\"]","\"0.4.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"a","\"everyth","\"forbidden\"}","\"gener","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:meta","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:id}","#{:id}}","#{route}}","%","%)","%))","%))))","&","'())","'[clojure.set","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[criterium.cor","'[expound.alpha","'[reitit.cor","'[reitit.middlewar","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[reitit.spec","'[reitit.spec])","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(and","(api","(app","(blank?","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec)","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(effect","(fn","(fnil","(for","(handler","(if","(let","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(onli","(option","(optional,recommend","(or","(r/match","(r/partial","(r/rout","(r/router","(recommend","(records,","(reitit/match","(reitit/routes))","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/def","(s/explain","(s/key","(s/valid?","(seq","(set!","(set/subset?","(some","(st/spec","(start","(stest/instru","(str","(updat","(via","(wrap",")benchmark","...","...])","/","/:user","/:version/statu","/api/user/:id:","/bulk/:bulk","/public/*path","1","1,","1.4m","1.8","1.9.0","1000]","18x","1k","2","200","200,","2013","286m","2})","2},","2}})","3","3.488297","3}}","403,","404}","404})))","50%","692.905995",":","::acc","::admin]","::admin}]","::coerc","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::singl","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]))",":a",":admin",":admin]]}",":admin}",":api",":api))})",":api)]}",":api]]",":api]]}",":append,",":arg",":auth/login]",":auth/recovery]",":bodi",":body,",":body}",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":coerc",":coercion",":coercion)",":command",":compil",":conflict",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":expand",":form,",":gen",":gen.",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":into",":let",":linear",":lookup",":meta",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":prefix",":prepend,",":put,",":put.",":queri",":query,",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":workspace/page]]))",":wrap",":wrap.",":y",";",";;","=","=>",">","?arg","[\"\"","[\"/:user","[\"/:version/status\"]])","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:users\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/api/orders/:id\"","[\"/api/ping\"","[\"/api/user/:id\"","[\"/auth/recovery/token/:token\"","[\"/bulk/:bulk","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public\"","[\"/public/*path\"]","[\"/user/:id\"","[\"/users\"","[\"/workspace/:project/:page\"","[\"pong\"]]])","[\"tenant1\"","[#(wrap","[%]","[...","[0]","[1]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::roles]","[::total]))","[::x","[:api","[:command","[:rout","[:routes]","[:user/p","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion/gen","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[metosin/spec","[org.clojure/clojur","[org.clojure/clojurescript","[org.clojure/spec.alpha","[path","[request]","[requir","[respons","[thi","[this])","[wrap","[x","[{:key","[{{{:key","^:replac","^^^^^^","_]","`reitit.coercion.protocol/coercion`","`reitit/router)","abstract","acc","access","accumul","action","actual","ad","adapt","add","admin}}]]","admin}}]]]))","adopt","advanc","against.","algorithms,","allow","alpha17\"]","alreadi","also,","alway","anonym","api.","app","app:","appli","applic","approaches,","arg","arg\"","arg.\"","args.","args?","argument","arguments.","arguments:","ariti","ask","async","at:","attacht","author","avail","avoid","back","base","baselin","basic","befor","behavior","behind","below","bench","benchmark","best","beta2\"]","better.","bi","bide","bootstrapping:","both","box","build","built","busi","but,","call","callback.","called.","case","catch","cc])","chain","cheng","child","class","client","clojur","clojure(script)","clojure(script),","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","clojurescript,","closur","co","code","code,","coerc","coercer","coercion","coercion,","coercion.","coercion/gen","coercion])","colect","collect","compar","compil","compilation,","compiled)","compiled,","compiler,","compilerexcept","compojur","components.","compos","configur","conflicit","conflict","conflicts!)","conflicts.","conflicts:","conform","conforming,","conj","contain","core","correctly:","cqr","creat","created,","created.","creation","currently,","custom","data","data,","data.","data:","db","db)","decid","decod","default","default,","defin","defined):","defined,","defined.","definit","demonstr","depend","dependeci","depends.","descript","details.","detect","dev","develop","differ","direct","disabl","doc","doesn't","don't","done","done:","driven","dynam","easi","easier","effec","effect","element","else\")","enabl","encod","enforc","ensur","error","especi","etc).","etc.)","ex","exact","exampl","example,","except","exceptioninfo","execut","exist","expand","expans","expect","explicit","expound","expound/printer)","expound])","extend","extens","extract","fail","fails,","fals","false)","fast","fast,","fast.","faster","faster.","featur","first","flatten","flattened:","fn","follow","following:","format","found","found,","found.","function","function,","function.","functions,","futur","gen","gener","get","given","go.","go:","good,","good?","great","guard","guid","handl","handler","handler:","handler]","handler]))","handler])))","handler]]]]","handlers,","handlers.","handler}])))","handler}]]])))","handler}}]]])))","hash","heart","higher","higher)","hoc","hook","hooks.","httprouter","id","id\"]","id)","id))","id)))","id))))","id/ord","id/orders\"]","id]","id]]))","identity]","identity]}","identity}}]]","identity}}]]))","id}","id},","ignored.","immut","implemen","implement","implementation.","in:","info","inform","information:","initi","inject","inlin","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","interceptor","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","it'","it?","itself.","json","jvm","key","key,","keys:","keyword","kind","know","languages,","late","later","leaf","less","level","lib","librari","libraries.","library.","libs)","lie.","life","linear","link","list","littl","local","log","long","look","lookup","lookup.","macbook","magnitud","manag","mani","manual","map","map,","map.","map:","match","match)","match,","match.","match?","matched,","matches,","matter?","matters.","mean","measur","merg","merge.","message.","messages:","meta","meta,","method","method.","methods.","micro","middlewar","middleware,","middleware.","middleware/interceptor","middleware:","middleware])","miss","mix","mode?","mode?]","more","more!","more.","mostli","mount","mount.\"","much","multimethod","multipl","mutabl","mw,","naiv","name","name!","name.","name]","names:","namespac","need","nest","new","nice","nil","nil,","nil:","nil]","node.j","non","normal","note","note:","nothing.\"","ok","on","ops/sec","opt","optim","optin","option","option,","optionally,","options.","opts)]","opts]}","order","order\"","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters/gen","parameters:","params]))","part","partialmatch","partialmatch,","pass","path","path])","payload.","pedest","pedestal,","penalty.","perf","perf.","perform","performance.","performance:","plain","plan","pluggabl","po","possibl","pr","pre","precompute/compil","predicate:","prefix","pretti","principl","print","println","pro,","problems.","processing,","processing.","produc","profile:","programmatically:","project:","protocol","protocol)","protocol,","protocol.","protocol:","provid","public","purpose:","qualifi","quick","r])","raise))))))","raise)))))))}))","raise]","rational","raw","rc1\"]","re","readi","readme,","real","realli","reason","reasoning:","record","record:","records,","recurs","regress","reitit","reitit,","reitit.core/expand","reitit.core/expand)","reitit.core/match","reitit.core/rout","reitit.core/router:","reitit.core/throw","reitit.middleware/intomiddlewar","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","reitit.ring.coercion:","reitit.ring.middleware/cr","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relat","relev","request","request)","request)))","request)))))","request.","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response]","responses)","rest","result","results:","resut","retriev","return","returned,","returned:","revers","rewritten.","ring","ring,","ring.","ring])","roadmap","role","roles)))","roles:","roles]}})))","root","rout","route))))","route,","route.","route:","router","router)","router,","router.","router:","routers.","routes)","routes):","routes,","routes.","routes:","routing)","routing,","routing.","routing:","run","runtim","s/*explain","s])","same","sampl","satisfi","scan.","scene","second","see","seem","select","separ","separately:","sequenti","sequential)","set","set,","set])","sever","shape","ship","shipped,","show","side","simpl","singl","sites,","slow,","slower","small","snapshot\"]","someth","sources.","spec","spec/coercion}})))","spec:","spec])","special","specs.","spend","st])","start","static","statu","step","stest])","still,","sting","store","str)})","string","stuctur","submap","submap.","subrouter.","subtle,","succeeds,","suitabl","super","support","swagger:","syntax","system.","table.","take","taken","target","test","test?","tests,","tests.","them.","thing","third","throw","thrown.","thrown:","time","time.","to,","to:","todo","togeth","too.","tool","tools\"","tools.cor","tools.core/spec.","tools])])","top","toward","transform","tree","tree:","trees,","trees.","tri","trie","true","trust","twice","two","type","un","under","understood","unmount","unreachanle.","until","unwrap","us","used)","used.","user","user\"","user]","user]}}]","usually,","val:","valid","valu","values.","vector","vector.","version","version:","via","want,","way","welcome.","well,","whole","wildcard","with?","work","work.","worlds.","wrap","wrap.","wrap2","wrap3","wrap}))","written","x","y)}})}}]]","y]}","yield","zero","{200","{::role","{:bodi","{:conflict","{:get","{:handler","{:id","{:interceptor","{:meta","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:statu","{:total","{:uri","{:x","{method","{rout","{}","µs"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Introduction","keywords":"","body":"Introduction\nReitit is a small Clojure(Script) library for data-driven routing.\n\nSimple data-driven route syntax\nRoute conflict resolution\nFirst-class route meta-data\nBi-directional routing\nPluggable coercion (clojure.spec)\nsupports both Middleware & Interceptors\nExtendable\nFast\n\nTo use Reitit, add the following dependecy to your project:\n[metosin/reitit \"0.1.0-SNAPSHOT\"]\n\nOptionally, the parts can be required separately:\n[metosin/reitit-core \"0.1.0-SNAPSHOT\"] ; just the router\n[metosin/reitit-ring \"0.1.0-SNAPSHOT\"] ; ring-router\n[metosin/reitit-spec \"0.1.0-SNAPSHOT\"] ; spec-coercion\n\nExamples\nSimple router\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api/ping\" ::ping]\n [\"/api/orders/:id\" ::order-by-id]]))\n\nRouting:\n(r/match-by-path router \"/api/ipa\")\n; nil\n\n(r/match-by-path router \"/api/ping\")\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-path router \"/api/orders/1\")\n; #Match{:template \"/api/orders/:id\"\n; :meta {:name ::order-by-id}\n; :result nil\n; :params {:id \"1\"}\n; :path \"/api/orders/1\"}\n\nReverse-routing:\n(r/match-by-name router ::ipa)\n; nil\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-name router ::order-by-id)\n; #PartialMatch{:template \"/api/orders/:id\"\n; :meta {:name :user/order-by-id}\n; :result nil\n; :params nil\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::order-by-id))\n; true\n\n(r/match-by-name router ::order-by-id {:id 2})\n; #Match{:template \"/api/orders/:id\",\n; :meta {:name ::order-by-id},\n; :result nil,\n; :params {:id 2},\n; :path \"/api/orders/2\"}\n\nRing-router\nRing-router adds support for :handler functions, :middleware and routing based on :request-method. It also supports pluggable parameter coercion (clojure.spec), data-driven middleware, route and middleware compilation, dynamic extensions and more.\n(require '[reitit.ring :as ring])\n\n(def handler [_]\n {:status 200, :body \"ok\"})\n\n(defn wrap [handler id]\n (fn [request]\n (update (handler request) :wrap (fnil conj '()) id)))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [[wrap :api]]}\n [\"/ping\" {:get handler\n :name ::ping}]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/users\" {:get handler\n :post handler}]]])))\n\nRouting:\n(app {:request-method :get, :uri \"/api/admin/users\"})\n; {:status 200, :body \"ok\", :wrap (:api :admin}\n\n(app {:request-method :put, :uri \"/api/admin/users\"})\n; nil\n\nReverse-routing:\n(require '[reitit.core :as r])\n\n(-> app (ring/get-router) (r/match-by-name ::ping))\n; #Match{:template \"/api/ping\"\n; :meta {:middleware [[#object[user$wrap] :api]]\n; :get {:handler #object[user$handler]}\n; :name ::ping}\n; :result #Methods{...}\n; :params nil\n; :path \"/api/ping\"}\n\n"},"basics/":{"url":"basics/","title":"Basics","keywords":"","body":"Basics\n\nRoute syntax\nRouter\nPath-based Routing\nName-based Routing\nRoute data\nRoute conflicts\n\n"},"basics/route_syntax.html":{"url":"basics/route_syntax.html","title":"Route syntax","keywords":"","body":"Route Syntax\nRoutes are defined as vectors of String path and optional (non-sequential) route argument child routes.\nRoutes can be wrapped in vectors and lists and nil routes are ignored.\nPaths can have path-parameters (:id) or catch-all-parameters (*path).\nExamples\nSimple route:\n[\"/ping\"]\n\nTwo routes:\n[[\"/ping\"]\n [\"/pong\"]]\n\nRoutes with route arguments:\n[[\"/ping\" ::ping]\n [\"/pong\" {:name ::pong}]]\n\nRoutes with path parameters:\n[[\"/users/:user-id\"]\n [\"/api/:version/ping\"]]\n\nRoute with catch-all parameter:\n[\"/public/*path\"]\n\nNested routes:\n[\"/api\"\n [\"/admin\" {:middleware [::admin]}\n [\"\" ::admin]\n [\"/db\" ::db]]\n [\"/ping\" ::ping]]\n\nSame routes flattened:\n[[\"/api/admin\" {:middleware [::admin], :name ::admin}]\n [\"/api/admin/db\" {:middleware [::admin], :name ::db}]\n [\"/api/ping\" {:name ::ping}]]\n\nGenerating routes\nAs routes are just data, it's easy to create them programmatically:\n(defn cqrs-routes [actions dev-mode?]\n [\"/api\" {:interceptors [::api ::db]}\n (for [[type interceptor] actions\n :let [path (str \"/\" (name interceptor))\n method (condp = type\n :query :get\n :command :post)]]\n [path {method {:interceptors [interceptor]}}])\n (if dev-mode? [\"/dev-tools\" ::dev-tools])])\n\n(cqrs-routes\n [[:query 'get-user]\n [:command 'add-user]\n [:command 'add-order]]\n false)\n; [\"/api\" {:interceptors [::api ::db]}\n; ([\"/get-user\" {:get {:interceptors [get-user]}}]\n; [\"/add-user\" {:post {:interceptors [add-user]}}]\n; [\"/add-order\" {:post {:interceptors [add-order]}}])\n; nil]\n\n"},"basics/router.html":{"url":"basics/router.html","title":"Router","keywords":"","body":"Router\nRoutes are just data and for routing, we need a router instance satisfying the reitit.core/Router protocol. Routers are created with reitit.core/router function, taking the raw routes and optionally an options map.\nThe Router protocol:\n(defprotocol Router\n (router-name [this])\n (routes [this])\n (options [this])\n (route-names [this])\n (match-by-path [this path])\n (match-by-name [this name] [this name params]))\n\nCreating a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nName of the created router:\n(r/router-name router)\n; :mixed-router\n\nThe flattened route tree:\n(r/routes router)\n; [[\"/api/ping\" {:name :user/ping}]\n; [\"/api/user/:id\" {:name :user/user}]]\n\nBehind the scenes\nWhen router is created, the following steps are done:\n\nroute tree is flattened\nroute arguments are expanded (via reitit.core/Expand protocol) and optionally coerced\nroute conflicts are resolved\nactual router implementation is selected and created\noptionally route meta-data gets compiled\n\n"},"basics/path_based_routing.html":{"url":"basics/path_based_routing.html","title":"Path-based Routing","keywords":"","body":"Path-based routing\nPath-based routing is done using the reitit.core/match-by-path function. It takes the router and path as arguments and returns one of the following:\n\nnil, no match\nPartialMatch, path matched, missing path-parameters (only in reverse-routing)\nMatch, exact match\n\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nNo match returns nil:\n(r/match-by-path router \"/hello\")\n; nil\n\nMatch provides the route information:\n(r/match-by-path router \"/api/user/1\")\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\n"},"basics/name_based_routing.html":{"url":"basics/name_based_routing.html","title":"Name-based Routing","keywords":"","body":"Name-based (reverse) routing\nAll routes which have :name route data defined, can also be matched by name.\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nListing all route names:\n(r/route-names router)\n; [:user/ping :user/user]\n\nNo match returns nil:\n(r/match-by-name router ::kikka)\nnil\n\nMatching a route:\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\nIf not all path-parameters are set, a PartialMatch is returned:\n(r/match-by-name router ::user)\n; #PartialMatch{:template \"/api/user/:id\",\n; :meta {:name :user/user},\n; :result nil,\n; :params nil,\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::user))\n; true\n\nWith provided path-parameters:\n(r/match-by-name router ::user {:id \"1\"})\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\nThere is also a exception throwing version:\n(r/match-by-name! router ::user)\n; ExceptionInfo missing path-params for route /api/user/:id: #{:id}\n\n"},"basics/route_data.html":{"url":"basics/route_data.html","title":"Route data","keywords":"","body":"Route data\nRoute data is the heart of this library. Routes can have any data attachted to them. Data is interpeted either by the client application or the Router via it's :coerce and :compile hooks. This enables co-existence of both adaptive and principled components.\nRoutes can have a non-sequential route argument that is expanded into route data map when a router is created.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\nThe expanded route data can be retrieved from a router with routes and is returned with match-by-path and match-by-name in case of a route match.\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\nNested route data\nFor nested route trees, route data is accumulated recursively from root towards leafs using meta-merge. Default behavior for colections is :append, but this can be overridden to :prepend, :replace or :displace using the target meta-data.\nAn example router with nested data:\n(def router\n (r/router\n [\"/api\" {:interceptors [::api]}\n [\"/ping\" ::ping]\n [\"/admin\" {:roles #{:admin}}\n [\"/users\" ::users]\n [\"/db\" {:interceptors [::db]\n :roles ^:replace #{:db-admin}}]]]))\n\nResolved route tree:\n(r/routes router)\n; [[\"/api/ping\" {:interceptors [::api]\n; :name :user/ping}]\n; [\"/api/admin/users\" {:interceptors [::api]\n; :roles #{:admin}\n; :name ::users} nil]\n; [\"/api/admin/db\" {:interceptors [::api ::db]\n; :roles #{:db-admin}}]]\n\nExpansion\nBy default, reitit/Expand protocol is used to expand the route arguments. It expands keywords into :name and functions into :handler key in the route data map. It's easy to add custom expanders and one can chenge the whole expand implementation via router options.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n"},"basics/route_conflicts.html":{"url":"basics/route_conflicts.html","title":"Route conflicts","keywords":"","body":"Route conflicts\nMany routing libraries allow multiple matches for a single path lookup. Usually, the first match is used and the rest are effecively unreachanle. This is not good, especially if route tree is merged from multiple sources.\nReitit resolves this by running explicit conflicit resolution when a router is called. Conflicting routes are passed into a :conflicts callback. Default implementation throws ex-info with a descriptive message.\nExamples router with conflicting routes:\n(require '[reitit.core :as r])\n\n(def routes\n [[\"/ping\"]\n [\"/:user-id/orders\"]\n [\"/bulk/:bulk-id\"]\n [\"/public/*path\"]\n [\"/:version/status\"]])\n\nBy default, ExceptionInfo is thrown:\n(r/router routes)\n; CompilerException clojure.lang.ExceptionInfo: Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\nJust logging the conflicts:\n(r/router\n routes\n {:conflicts (comp println reitit/conflicts-str)})\n; Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\n"},"advanced/":{"url":"advanced/","title":"Advanced","keywords":"","body":"Advanced\n\nConfiguring routers\nDifferent Routers\nRoute Validation\n\n"},"advanced/configuring_routers.html":{"url":"advanced/configuring_routers.html","title":"Configuring routers","keywords":"","body":"Configuring Routers\nRouters can be configured via options. Options allow things like clojure.spec validation for meta-data and fast, compiled handlers. The following options are available for the reitit.core/router:\n\n\n\nkey\ndescription\n\n\n\n\n:path\nBase-path for routes\n\n\n:routes\nInitial resolved routes (default [])\n\n\n:meta\nInitial expanded route-meta vector (default [])\n\n\n:expand\nFunction of arg opts => meta to expand route arg to route meta-data (default reitit.core/expand)\n\n\n:coerce\nFunction of route opts => route to coerce resolved route, can throw or return nil\n\n\n:compile\nFunction of route opts => result to compile a route handler\n\n\n:conflicts\nFunction of {route #{route}} => side-effect to handle conflicting routes (default reitit.core/throw-on-conflicts!)\n\n\n:router\nFunction of routes opts => router to override the actual router implementation\n\n\n\n"},"advanced/different_routers.html":{"url":"advanced/different_routers.html","title":"Different Routers","keywords":"","body":"Different Routers\nReitit ships with several different implementations for the Router protocol, originally based on the Pedestal implementation. router function selects the most suitable implementation by inspecting the expanded routes. The implementation can be set manually using :router option, see configuring routers.\n\n\n\nrouter\ndescription\n\n\n\n\n:linear-router\nMatches the routes one-by-one starting from the top until a match is found. Works with any kind of routes. Slow, but works with all route trees.\n\n\n:lookup-router\nFast router, uses hash-lookup to resolve the route. Valid if no paths have path or catch-all parameters and there are no Route conflicts.\n\n\n:mixed-router\nCreates internally a :prefix-tree-router and a :lookup-router and used them to effectively get best-of-both-worlds. Valid only if there are no Route conflicts.\n\n\n::single-static-path-router\nSuper fast router: sting-matches the route. Valid only if there is one static route.\n\n\n:prefix-tree-router\nRouter that creates a prefix-tree out of an route table. Much faster than :linear-router. Valid only if there are no Route conflicts.\n\n\n\nThe router name can be asked from the router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/api/:users\" ::users]]))\n\n(r/router-name router)\n; :mixed-router\n\n"},"advanced/route_validation.html":{"url":"advanced/route_validation.html","title":"Route Validation","keywords":"","body":"Route validation\nNamespace reitit.spec contains clojure.spec definitions for raw-routes, routes, router and router options.\nNOTE: Use of specs requires to use one of the following:\n\n[org.clojure/clojurescript \"1.9.660\"] (or higher)\n[org.clojure/clojure \"1.9.0-RC1\"] (or higher)\n[clojure-future-spec \"1.9.0-alpha17\"] (if Clojure 1.8 is used)\n\nExample\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec :as spec])\n\n(def routes-from-db\n [\"tenant1\" ::tenant1])\n\n(s/valid? ::spec/raw-routes routes-from-db)\n; false\n\n(s/explain ::spec/raw-routes routes-from-db)\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/path at: [:route :path] predicate: (or (blank? %) (starts-with? % \"/\"))\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; In: [1] val: :user/tenant1 fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; :clojure.spec.alpha/spec :reitit.spec/raw-routes\n; :clojure.spec.alpha/value [\"tenant1\" :user/tenant1]\n\nAt development time\nreitit.core/router can be instrumented and use something like expound to pretty-print the spec problems.\nFirst add a :dev dependency to:\n[expound \"0.3.0\"] ; or higher\n\nSome bootstrapping:\n(require '[clojure.spec.test.alpha :as stest])\n(require '[expound.alpha :as expound])\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec])\n\n(stest/instrument `reitit/router)\n(set! s/*explain-out* expound/printer)\n\nAnd we are ready to go:\n(require '[reitit.core :as r])\n\n(r/router\n [\"/api\"\n [\"/public\"\n [\"/ping\"]\n [\"pong\"]]])\n\n; CompilerException clojure.lang.ExceptionInfo: Call to #'reitit.core/router did not conform to spec:\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([\"/api\" ...])\n; ^^^^^^\n;\n; should satisfy\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; or\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([... [... ... [\"pong\"]]])\n; ^^^^^^\n;\n; should satisfy\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; or\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/path:\n; (clojure.spec.alpha/and\n; clojure.core/string?\n; (clojure.core/fn\n; [%]\n; (clojure.core/or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\"))))\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -------------------------\n; Detected 2 errors\n\nValidating route data\nTODO\n"},"ring/":{"url":"ring/","title":"Ring","keywords":"","body":"Ring\n\nRing-router\nDynamic extensions\nData-driven Middleware\nParameter coercion\nCompiling middleware\n\n"},"ring/ring.html":{"url":"ring/ring.html","title":"Ring-router","keywords":"","body":"Ring Router\nRing-router adds support for handlers, middleware and routing based on :request-method. Ring-router is created with reitit.ring/router function. It runs a custom route compiler, creating a optimized stucture for handling route matches, with compiled middleware chain & handlers for all request methods. It also ensures that all routes have a :handler defined.\nSimple Ring app:\n(require '[reitit.ring :as ring])\n\n(defn handler [_]\n {:status 200, :body \"ok\"})\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler])))\n\nApplying the handler:\n(app {:request-method :get, :uri \"/favicon.ico\"})\n; nil\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\nThe expanded routes shows the compilation results:\n(-> app (ring/get-router) (reitit/routes))\n; [[\"/ping\"\n; {:handler #object[...]}\n; #Methods{:any #Endpoint{:meta {:handler #object[...]},\n; :handler #object[...],\n; :middleware []}}]]\n\nNote that the compiled resuts as third element in the route vector.\nRequest-method based routing\nHandler are also looked under request-method keys: :get, :head, :patch, :delete, :options, :post or :put. Top-level handler is used if request-method based handler is not found.\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" {:name ::ping\n :get handler\n :post handler}])))\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\n(app {:request-method :put, :uri \"/ping\"})\n; nil\n\nName-based reverse routing:\n(-> app\n (ring/get-router)\n (reitit/match-by-name ::ping)\n :path)\n; \"/ping\"\n\nMiddleware\nMiddleware can be added with a :middleware key, either to top-level or under :request-method submap. It's value should be a vector value of the following:\n\nnormal ring middleware function handler -> request -> response\nvector of middleware function handler ?args -> request -> response and optinally it's args.\n\nA middleware and a handler:\n(defn wrap [handler id]\n (fn [request]\n (handler (update request ::acc (fnil conj []) id))))\n\n(defn handler [{:keys [::acc]}]\n {:status 200, :body (conj acc :handler)})\n\nApp with nested middleware:\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [#(wrap % :api)]}\n [\"/ping\" handler]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/db\" {:middleware [[wrap :db]]\n :delete {:middleware [[wrap :delete]]\n :handler handler}}]]])))\n\nMiddleware is applied correctly:\n(app {:request-method :delete, :uri \"/api/ping\"})\n; {:status 200, :body [:api :handler]}\n\n(app {:request-method :delete, :uri \"/api/admin/db\"})\n; {:status 200, :body [:api :admin :db :delete :handler]}\n\nNot found\nIf no routes match, nil is returned, which is not understood by Ring.\nEnabling custom error messages:\n(def app\n (some-fn\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler]))\n (constantly {:status 404})))\n\n(app {:uri \"/invalid\"})\n; {:status 404}\n\nAsync Ring\nAll built-in middleware provide both 2 and 3-arity and are compiled for both Clojure & ClojureScript, so they work with Async Ring and Node.js too.\n"},"ring/dynamic_extensions.html":{"url":"ring/dynamic_extensions.html","title":"Dynamic extensions","keywords":"","body":"Dynamic extensions\nring-handler injects the Match into a request and it can be extracted at runtime with reitit.ring/get-match. This can be used to build ad-hoc extensions to the system.\nExample middleware to guard routes based on user roles:\n(require '[clojure.set :as set])\n\n(defn wrap-enforce-roles [handler]\n (fn [{:keys [::roles] :as request}]\n (let [required (some-> request (ring/get-match) :meta ::roles)]\n (if (and (seq required) (not (set/subset? required roles)))\n {:status 403, :body \"forbidden\"}\n (handler request)))))\n\nMounted to an app via router meta-data (effecting all routes):\n(def handler (constantly {:status 200, :body \"ok\"}))\n\n(def app\n (ring/ring-handler\n (ring/router\n [[\"/api\"\n [\"/ping\" handler]\n [\"/admin\" {::roles #{:admin}}\n [\"/ping\" handler]]]]\n {:meta {:middleware [wrap-enforce-roles]}})))\n\nAnonymous access to public route:\n(app {:request-method :get, :uri \"/api/ping\"})\n; {:status 200, :body \"ok\"}\n\nAnonymous access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\"})\n; {:status 403, :body \"forbidden\"}\n\nAuthorized access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\", ::roles #{:admin}})\n; {:status 200, :body \"ok\"}\n\n"},"ring/data_driven_middleware.html":{"url":"ring/data_driven_middleware.html","title":"Data-driven Middleware","keywords":"","body":"Data-driven Middleware\nReitit supports first-class data-driven middleware via reitit.ring.middleware/Middleware records, created with reitit.ring.middleware/create function. The following keys have special purpose:\n\n\n\nkey\ndescription\n\n\n\n\n:name\nName of the middleware as qualified keyword (optional,recommended for libs)\n\n\n:wrap\nThe actual middleware function of handler args? => request => response\n\n\n:gen\nMiddleware compile function, see compiling middleware.\n\n\n\nWhen routes are compiled, all middleware are expanded (and optionally compiled) into Middleware Records and stored in compilation results for later use (api-docs etc). For actual request processing, they are unwrapped into normal middleware functions and composed together producing zero runtime performance penalty. Middleware expansion is backed by reitit.middleware/IntoMiddleware protocol, enabling plain clojure(script) maps to be used.\nA Record:\n(require '[reitit.middleware :as middleware])\n\n(def wrap2\n (middleware/create\n {:name ::wrap2\n :description \"a nice little mw, takes 1 arg.\"\n :wrap wrap}))\n\nAs plain map:\n;; plain map\n(def wrap3\n {:name ::wrap3\n :description \"a nice little mw, :api as arg\"\n :wrap (fn [handler]\n (wrap handler :api))})\n\nTODO\nmore!\n"},"ring/parameter_coercion.html":{"url":"ring/parameter_coercion.html","title":"Parameter coercion","keywords":"","body":"Parameter coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api. Reitit ships with reitit.ring.coercion.spec/SpecCoercion providing implemenation for clojure.spec and data-specs.\nNOTE: Before Clojure 1.9.0 is shipped, to use the spec-coercion, one needs to add the following dependencies manually to the project:\n[org.clojure/clojure \"1.9.0-beta2\"]\n[org.clojure/spec.alpha \"0.1.123\"]\n[metosin/spec-tools \"0.4.0\"]\n\nRing request and response coercion\nTo use Coercion with Ring, one needs to do the following:\n\nDefine parameters and responses as data into route meta-data, in format adopted from ring-swagger:\n:parameters map, with submaps for different parameters: :query, :body, :form, :header and :path. Parameters are defined in the format understood by the Coercion.\n:responses map, with response status codes as keys (or :default for \"everything else\") with maps with :schema and optionally :description as values.\n\n\nDefine a Coercion to route meta-data under :coercion\nMount request & response coercion middleware to the routes (recommended to mount to all routes under router as they mounted only to routes which have the parameters / responses defined):\nreitit.ring.coercion/gen-wrap-coerce-parameters\ngen-wrap-coerce-parameters/gen-wrap-coerce-responses\n\n\n\nIf the request coercion succeeds, the coerced parameters are injected into request under :parameters.\nIf either request or response coercion fails, an descriptive error is thrown.\nExample with data-specs\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body {:x int?, :y int?}}\n :responses {200 {:schema {:total pos-int?}}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\nExample with specs\nCurrently, clojure.spec doesn't support runtime transformations via conforming, so one needs to wrap all specs with spec-tools.core/spec.\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n(require '[clojure.spec.alpha :as s])\n(require '[spec-tools.core :as st])\n\n(s/def ::x (st/spec int?))\n(s/def ::y (st/spec int?))\n(s/def ::total int?)\n(s/def ::request (s/keys :req-un [::x ::y]))\n(s/def ::response (s/keys :req-un [::total]))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body ::request}\n :responses {200 {:schema ::response}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\n"},"ring/compiling_middleware.html":{"url":"ring/compiling_middleware.html","title":"Compiling middleware","keywords":"","body":"Compiling Middleware\nThe dynamic extensions is a easy way to extend the system. To enable fast lookups into route data, we can compile them into any shape (records, functions etc.) we want, enabling fast access at request-time.\nStill, we can do better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. Middleware/interceptor can also decide not to mount itself. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?\nTo enable this we use middleware records :gen hook instead of the normal :wrap. :gen expects a function of route-meta router-opts => wrap. Middleware can also return nil, which effective unmounts the middleware.\nTo demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen. These are the actual codes are from reitit.ring.coercion:\nNaive\n\nExtracts the compiled route information on every request.\n\n(defn wrap-coerce-response\n \"Pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise will do nothing.\"\n [handler]\n (fn\n ([request]\n (let [response (handler request)\n method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (coerce-response coercers request response))\n response)))\n ([request respond raise]\n (let [method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (handler request #(respond (coerce-response coercers request %))))\n (handler request respond raise))))))\n\nCompiled\n\nRoute information is provided via a closure\nPre-compiled coercers\nMounts only if :coercion and :responses are defined for the route\n\n(def gen-wrap-coerce-response\n \"Generator for pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise does not mount.\"\n (middleware/create\n {:name ::coerce-response\n :gen (fn [{:keys [responses coercion opts]} _]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (fn [handler]\n (fn\n ([request]\n (coerce-response coercers request (handler request)))\n ([request respond raise]\n (handler request #(respond (coerce-response coercers request %)) raise)))))))}))\n\nThe :gen -version has 50% less code, is easier to reason about and is twice as faster on basic perf tests.\n"},"performance.html":{"url":"performance.html","title":"Performance","keywords":"","body":"Performance\nThere are many great routing libraries for Clojure(Script), but not many are optimized for perf. Reitit tries to be both great in features and really fast. Originally the routing was adopted from Pedestal, but it has been since mostly rewritten.\nRationale\n\nMultiple routing algorithms, select for for a given route tree\nRoute flattening and re-ordering\nManaged mutability over Immutability\nPrecompute/compile as much as possible (matches, middleware, routes)\nUse abstractions that enable JVM optimizations\nUse small functions to enable JVM Inlining\nProtocols over Multimethods\nRecords over Maps\nAlways be measuring\nDon't trust the (micro-)benchmarks\n\nPerformance guides\nSome things related to performance:\n\navoid wildcard-routes - it's an order of magnitude slower to match than non-wildcard routes\nit's ok to mix non-wildcard and wildcard routes in a same routing tree as long as you don't disable the conflict resolution => if no conflicting routes are found, a :mixed-router can be created, which collects all non-wildcard routes into a separate fast subrouter.\n\nDoes routing performance matter?\nWell, it depends. Some tested routing libs seem to spend more time resolving the routes than it takes to encode & decode a 1k JSON payload. For busy sites, this actually matters.\nExample\nThe routing sample taken from bide README, run with a Late 2013 MacBook Pro, with the perf profile:\n(require '[reitit.core :as r])\n(require '[criterium.core :as cc])\n\n(def routes\n (r/router\n [[\"/auth/login\" :auth/login]\n [\"/auth/recovery/token/:token\" :auth/recovery]\n [\"/workspace/:project/:page\" :workspace/page]]))\n\n;; Execution time mean : 3.488297 µs -> 286M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/auth/login\")))\n\n;; Execution time mean : 692.905995 µs -> 1.4M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/workspace/1/1\")))\n\nIs that good?\nBased on some quick perf tests, the first lookup is two orders of magnitude faster than other tested Clojure routing libraries. The second lookup is 3-18x faster.\nBut, most micro-benchmarks lie. For example, Pedestal is always matching the :request-method which means it does more work. With real life routing trees, the differences are most likely more subtle, or some other lib might be actually faster.\nSo why test?\nReal value of perf tests is to get a internal baseline to optimize against. Also, to ensure that new features don't regress the performance.\nIt might be interesting to look out of the box and compare the fast Clojure routing libs to routers in other languages, like the routers in Go.\nRoadmap\nCurrently, the non-wildcard routes are already really fast to match, but wildcard routes use only a naive linear scan. Plan is to add a optimized Trie-based router. See\nhttprouter and Pedestal for details.\nPRs welcome.\n"}}}
\ No newline at end of file
+{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"0.1.0","\"1\"}","\"ok\",","\"ok\"})","#match{:templ","#methods{...}","#object[user$handler]}","#partialmatch{:templ","#{:id}}","&","'())","'[reitit.cor","'[reitit.r","(","(:api","(app","(clojure.spec)","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":get",":get,",":handler",":meta",":middlewar",":name",":param",":path",":post",":put,",":request",":requir",":result",":uri",":user/ord",":wrap",";",">","[\"/admin\"","[\"/api\"","[\"/api/orders/:id\"","[\"/ping\"","[\"/users\"","[[\"/api/ping\"","[[#object[user$wrap]","[[wrap","[_]","[handler","[metosin/reitit","[request]","add","app","base","bi","both","class","clojure(script)","coercion","compilation,","conflict","conj","core","data","dependeci","direct","driven","dynam","exampl","extend","extens","fast","first","follow","functions,","handler","handler}]]])))","id","id)","id))","id)))","id]","id]]))","id}","id},","interceptor","introduct","librari","match?","meta","method","method.","middlewar","middleware,","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","separately:","simpl","small","snapshot\"]","spec","support","syntax","true","us","wrap","{:get","{:handler","{:id","{:middlewar","{:name","{:request","{:statu","{}"],"basics/":["base","basic","conflict","data","name","path","rout","router","syntax"],"basics/route_syntax.html":["\"/\"","'add","'get","(*path).","(:id)","([\"/get","(condp","(cqr","(defn","(for","(if","(name","(non","(str","::admin]","::admin}]","::db]]","::db]}","::db}]","::dev","::ping]","::ping]]","::ping}]]","::pong}]]",":command",":get",":let",":name",":post)]]",":queri",";","=","[\"\"","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/ping\"","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public/*path\"]","[::admin],","[::admin]}","[::api","[:command","[[\"/api/admin\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[:queri","[[type","[action","[add","[get","[interceptor]}}])","[path","action","argument","arguments:","catch","child","cqr","creat","data,","defin","dev","easi","exampl","false)","flattened:","gener","id\"]","ignored.","interceptor))","interceptor]","it'","list","method","mode?","mode?]","nest","nil","nil]","option","order\"","order]]","order]}}])","paramet","parameter:","parameters:","path","programmatically:","rout","route:","routes.","routes:","same","sequential)","simpl","string","syntax","tools\"","tools])])","two","type","user\"","user]","user]}}]","vector","wrap","{:get","{:interceptor","{:middlewar","{:name","{:post","{method"],"basics/router.html":["'[reitit.cor","(def","(defprotocol","(match","(option","(r/rout","(r/router","(requir","(rout","(router","(via","::ping]","::user]]]))",":a",":mix",":user/ping}]",":user/user}]]",";","[\"/api/user/:id\"","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","[[\"/api/ping\"","[thi","[this])","actual","argument","behind","coerc","compil","conflict","creat","created,","data","done:","expand","flatten","follow","function,","get","implement","instanc","map.","meta","name","name]","need","option","params]))","path","path])","protocol)","protocol.","protocol:","r])","raw","reitit.core/expand","reitit.core/rout","resolv","rout","router","router)","router:","routing,","satisfi","scene","select","step","take","tree","tree:","{:name"],"basics/path_based_routing.html":["\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/hello\")","\"1\"}}","#match{:templ","'[reitit.cor","(def","(onli","(r/match","(r/router","(requir","::ping]","::user]]]))",":a",":meta",":param",":path",":result",":user/user}",";","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","argument","base","done","exact","following:","function.","given","information:","match","match,","matched,","miss","nil","nil,","nil:","on","paramet","partialmatch,","path","provid","r])","reitit.core/match","return","revers","rout","router","router:","routing)","take","us","{:id","{:name"],"basics/name_based_routing.html":["\"/api/ping\"","\"/api/ping\"}","\"/api/user/1\"","\"/api/user/:id\"","\"/api/user/:id\",","\"1\"})","\"1\"}}","#match{:templ","#partialmatch{:templ","#{:id}","#{:id}}","'[reitit.cor","(def","(r/match","(r/partial","(r/rout","(r/router","(requir","(reverse)","/api/user/:id:","::kikka)","::ping)","::ping]","::user","::user)","::user))","::user]]]))",":a",":meta",":name",":param",":path",":requir",":result",":user/ping}",":user/user]",":user/user}",":user/user},",";","[\"/ping\"","[\"/user/:id\"","[:user/p","[[\"/api\"","base","data","defined,","except","exceptioninfo","given","list","match","match?","miss","name","name!","name.","names:","nil","nil,","nil:","param","paramet","parameters:","partialmatch","path","provid","r])","return","returned:","rout","route:","router","router)","router:","set,","throw","true","version:","{:id","{:name","{}"],"basics/route_data.html":["\"/ping\"","\"/ping\")","\"/ping\"}","#match{:templ","#{:admin}","#{:admin}}","#{:db","'[reitit.cor","(def","(r/match","(r/rout","(r/router","(requir","::db]","::ping)","::ping]","::users]","::users}",":a",":append,",":coerc",":compil",":displac",":handler",":meta",":name",":param",":path",":prepend,",":replac",":result",":role",":user/ping}",":user/ping}]",";","[\"/admin\"","[\"/api\"","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/db\"","[\"/ping\"","[\"/pong\"","[\"/users\"","[::api","[::api]","[::api]}","[::db]","[[\"/api/ping\"","[[\"/ping\"","^:replac","accumul","adapt","add","admin}}]]","admin}}]]]))","applic","argument","arguments.","attacht","behavior","both","case","cheng","client","co","colect","components.","created.","custom","data","data.","data:","default","default,","easi","enabl","exampl","exist","expand","expans","function","heart","hooks.","identity]","identity]}","identity}}]]","identity}}]]))","implement","interpet","it'","key","keyword","leaf","library.","map","map.","match","match.","merge.","meta","name","nest","nil","nil]","non","on","options.","overridden","path","principl","protocol","r])","recurs","reitit/expand","resolv","retriev","return","root","rout","router","router)","sequenti","target","them.","toward","tree:","trees,","us","via","whole","{:get","{:handler","{:interceptor","{:name","{:role","{}"],"basics/route_conflicts.html":["'[reitit.cor","(comp","(def","(r/router","(requir","/:user","/:version/statu","/bulk/:bulk","/public/*path",":a",":conflict",";",">","[\"/:user","[\"/:version/status\"]])","[\"/bulk/:bulk","[\"/public/*path\"]","[[\"/ping\"]","allow","callback.","called.","clojure.lang.exceptioninfo:","compilerexcept","conflicit","conflict","conflicts:","contain","default","default,","descript","effec","especi","ex","exampl","exceptioninfo","explicit","first","good,","id","id\"]","id/ord","id/orders\"]","implement","info","librari","log","lookup.","mani","match","merg","message.","multipl","pass","path","println","r])","reitit","reitit/conflict","resolut","resolv","rest","rout","router","routes)","routes:","run","singl","sources.","str)})","throw","thrown:","tree","unreachanle.","us","usually,","{:conflict"],"advanced/":["advanc","configur","differ","rout","router","valid"],"advanced/configuring_routers.html":["#{route}}","(default",":coerc",":compil",":conflict",":expand",":meta",":path",":rout",":router","=>","[])","actual","allow","arg","avail","base","clojure.spec","coerc","compil","configur","conflict","conflicts!)","data","descript","effect","expand","fast,","follow","function","handl","handler","handlers.","implement","initi","key","meta","nil","opt","option","options.","overrid","path","reitit.core/expand)","reitit.core/router:","reitit.core/throw","resolv","result","return","rout","route,","router","side","thing","throw","valid","vector","via","{rout"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::singl","::users]]))",":a",":linear",":lookup",":mix",":prefix",":router",";","[\"/api/:users\"","[[\"/ping\"","ask","base","best","both","catch","configur","conflicts.","creat","descript","differ","effect","expand","fast","faster","found.","function","hash","implement","implementation.","inspect","intern","kind","lookup","manual","match","much","name","on","option,","origin","out","paramet","path","pedest","prefix","protocol,","r])","reitit","resolv","rout","route.","router","router)","router,","router.","router:","routers.","routes.","see","select","set","sever","ship","slow,","start","static","sting","suitabl","super","table.","top","tree","trees.","until","us","valid","work","worlds."],"advanced/route_validation.html":["\"/\"))","\"/\")))","\"/\"))))","\"0.3.0\"]","\"1.9.0","\"1.9.660\"]","\"tenant1\"","#'reitit.core/rout","%","%)","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[expound.alpha","'[reitit.cor","'[reitit.spec","'[reitit.spec])","(*","(?","([\"/api\"","([...","(and","(blank?","(cat","(clojure.core/fn","(clojure.core/or","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(def","(fn","(if","(nilabl","(or","(r/router","(requir","(s/explain","(s/valid?","(set!","(start","(stest/instru","...","...])","1.8","2","::spec/raw","::tenant1])",":a",":arg",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":dev",":into",":path",":path]",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":rout",":user/tenant1",":user/tenant1]",";","[\"/api\"","[\"/ping\"]","[\"/public\"","[\"pong\"]]])","[\"tenant1\"","[%]","[...","[0]","[1]","[:rout","[:routes]","[]))","[clojur","[expound","[org.clojure/clojur","[org.clojure/clojurescript","^^^^^^","`reitit/router)","add","alpha17\"]","argument","at:","bootstrapping:","call","clojur","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","compilerexcept","conform","contain","data","db","db)","definit","depend","detect","develop","error","exampl","expound","expound/printer)","expound])","fail","fals","first","following:","function","futur","go:","higher","higher)","in:","instrument","namespac","note:","on","options.","out*","predicate:","pretti","print","problems.","r])","raw","rc1\"]","readi","reitit.core/rout","reitit.spec","relev","requir","rout","route))))","route:","router","routes,","routes:","s/*explain","s])","satisfi","someth","spec","spec:","spec])","stest])","time","to:","todo","us","used)","val:","valid","with?"],"ring/":["coercion","compil","data","driven","dynam","extens","middlewar","paramet","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:meta","#methods{:ani","#object[...],","#object[...]}","#object[...]},","%","&","'[reitit.r","(","(app","(conj","(constantli","(def","(defn","(fn","(fnil","(handler","(reitit/match","(reitit/routes))","(requir","(ring/get","(ring/r","(ring/rout","(some","(updat","2","200,","3","404}","404})))","::acc","::ping","::ping)",":a",":admin",":admin]]}",":api)]}",":bodi",":db",":db]]",":delet",":delete,",":delete]]",":get",":get,",":handler",":handler)})",":handler]}",":head,",":middlewar",":options,",":patch,",":path)",":post",":put,",":put.",":request",":uri",";",">","?arg","[\"/admin\"","[\"/api\"","[\"/db\"","[\"/ping\"","[#(wrap","[::acc]}]","[:api","[[\"/ping\"","[[wrap","[])","[]}}]]","[_]","[handler","[request]","[{:key","acc","ad","add","app","app:","appli","args.","ariti","async","base","both","built","chain","clojur","clojurescript,","compil","compiler,","conj","correctly:","creat","custom","defined.","element","enabl","ensur","error","expand","fn","following:","found","found.","function","function.","handl","handler","handler:","handler]","handler]))","handler])))","handlers,","handler}])))","handler}}]]])))","id))))","id]","it'","key,","keys:","level","look","match,","matches,","messages:","method","method.","methods.","middlewar","middleware:","name","nest","nil","node.j","normal","note","optim","optin","provid","reitit.ring/rout","request","respons","results:","resut","returned,","revers","ring","ring.","ring])","rout","router","router)","routing:","run","show","simpl","stuctur","submap.","support","third","too.","top","under","understood","us","valu","vector","vector.","work","wrap","{:handler","{:middlewar","{:name","{:request","{:statu","{:uri"],"ring/dynamic_extensions.html":["\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/ping\"})","\"forbidden\"}","\"ok\"}","\"ok\"}))","#{:admin}}","#{:admin}})","'[clojure.set","(and","(app","(constantli","(def","(defn","(effect","(fn","(handler","(if","(let","(not","(requir","(ring/get","(ring/r","(ring/rout","(seq","(set/subset?","(some","200,","403,","::role","::roles)]",":a",":bodi",":get,",":meta",":uri",";",">","[\"/admin\"","[\"/ping\"","[::roles]","[[\"/api\"","[handler]","[requir","[wrap","[{:key","access","ad","anonym","app","author","base","build","data","dynam","enforc","exampl","extens","extract","guard","handler","handler]","handler]]]]","hoc","inject","match","match)","match.","meta","method","middlewar","mount","public","reitit.ring/get","request","request)))))","request}]","requir","required)","ring","role","roles)))","roles:","roles]}})))","rout","route:","router","routes):","runtim","set])","system.","us","user","via","wrap","{::role","{:meta","{:middlewar","{:request","{:statu"],"ring/data_driven_middleware.html":["\"/api/ping\"})","\"middlewar","#{:session}","#{:user}","&","'[reitit.r","'[reitit.ring.middlewar","(a","(and","(app","(conj","(def","(defn","(duct/integrant/macchiato","(figwheel","(fn","(fnil","(handler","(middleware/cr","(of","(optional)","(requir","(ring/r","(ring/rout","(updat","1]","2","200,","2]]}","3","3]]","::acc","::wrap2","::wrap3",":a",":bodi",":descript",":gen",":get,",":handler",":handler)})",":handler]}",":middlewar",":name",":provides.",":requir",":role",":uri",":wrap",";","=>","[\"/api\"","[\"/ping\"","[1","[::acc]}]","[[wrap","[[wrap3","[])","[handler","[request]","[wrap2","[{:key","acc","access","actual","against","and/or","anyth","api","app","arbitrari","arg","authorizationmiddlewar","authrorizationmiddlewar","avail","befor","bit","bubblin'","call","chain","chain.","class","coerc","compil","complain","conj","correctly:","creat","data","debug","default","default,","defin","depend","descript","details.","differently:","doc","document","driven","e.g.","easi","enabl","entri","etc.","everyth","expans","extern","first","fix","follow","form","function","function,","function.","functions,","futur","gener","given","great","handl","handler","handler}}]])))","hard.","help","hook","id))))","id]","idea","ident","injectuserintorequestmiddlewar","insid","inventories,","issu","it'","key","keys,","keyword","keywords)","level","make","malipul","manipul","map","merg","method","middlewar","middleware)","middleware,","middleware.","middleware])","name","new","normal","opaque,","opt","optim","partial","penalty.","performance,","processing,","produc","propos","protocol.","provid","purpose:","qualifi","raw","record","records.","registri","reitit","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","request","request.","requir","resolut","respons","response.","results,","ring","ring])","rout","route.","router).","runtim","s/key","see","set","sound","spec","spec:","special","style)","support","thing","things.\"","thu","togeth","top","transform","turn","type","typo","under:","undrstand","unwrap","us","valid","valu","vector","welcom","wrap","wrap2","wrap3","wrap})","wrap}))","yield","zero","{:get","{:middlewar","{:name","{:request","{:statu"],"ring/parameter_coercion.html":["\"/api/ping\"","\"0.1.123\"]","\"0.4.0\"]","\"1.9.0","\"everyth","&","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[spec","(+","(app","(def","(fn","(or","(recommend","(requir","(ring/r","(ring/rout","(s/def","(s/key","(st/spec","/","1,","1.9.0","200","200,","2}})","3}}","::i","::request","::request}","::respons","::response}}","::total","::x","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":form,",":get",":header",":paramet",":parameters.",":parameters}]",":path.",":query,",":req",":respons",":schema",":uri",":y",";","[\"/api\"","[\"/ping\"","[::total]))","[::x","[coercion/gen","[metosin/spec","[org.clojure/clojur","[org.clojure/spec.alpha","[x","[{{{:key","add","adopt","api.","app","befor","beta2\"]","clojur","clojure.spec","code","coerc","coercion","coercion,","coercion.","coercion/gen","coercion])","compojur","conforming,","currently,","data","data,","defin","defined):","depend","descript","differ","doesn't","else\")","error","exampl","fails,","follow","following:","format","gen","handler","implemen","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","key","manual","map","map,","meta","method","middlewar","mount","need","note:","on","option","origin","param","paramet","parameters/gen","parameters:","pluggabl","po","project:","protocol,","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","request","respons","response]","ring","ring,","ring])","rout","router","runtim","s])","ship","shipped,","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","thrown.","tool","tools.cor","tools.core/spec.","transform","un","under","understood","us","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:handler","{:meta","{:middlewar","{:paramet","{:request","{:schema","{:statu","{:total","{:x"],"ring/compiling_middleware.html":["\"gener","\"pluggabl","#(respond","%))","%))))","'[reitit.ring.middlewar","(","(:request","([request","([request]","(and","(coerc","(compiled)","(def","(defn","(fn","(handler","(if","(let","(middleware/cr","(records,","(requir","(respons","(ring/get","50%","::coerc",":a",":coercion",":coercion)",":gen",":meta",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","?wrap.","[coercer","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","below","better.","closur","code","code,","coerc","coercer","coercion","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","faster.","found","function","gen","handler","inform","instead","it?","itself","key","know","latter","less","link","local","lookup","match","meta","meta,","method","middlewar","middleware.","middleware/interceptor","middleware])","mount","mount.\"","much","naiv","nil.","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","read","reason","reasoning:","record","reitit.ring.coercion:","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","still,","system.","time.","to,","transform","two","type","us","via","want,","way","wrap","wrap.","written","yield","{:name"],"performance.html":["\"/auth/login\")))","\"/workspace/1/1\")))","&","'[criterium.cor","'[reitit.cor","(ataraxy,","(cc/quick","(def","(dotim","(here:","(matches,","(micro","(r/match","(r/router","(requir","(static","(wildcard",")benchmark","1.9m","1000]","1k","2013","24x","3.2","300","312m","4","500x","530",":",":a",":auth/login]",":auth/recovery]",":mix",":workspace/page]]))",";;","=>",">","[\"/auth/recovery/token/:token\"","[\"/workspace/:project/:page\"","[[\"/auth/login\"","[_","abstract","actual","adopt","against.","algorithms,","also,","alway","ataraxy)","base","baselin","behav","bench","benchmarks.","bide","bidi,","both","box","busi","but,","cc])","clojur","clojure(script),","compar","compil","compojur","compojure,","comput","conflict","created,","creation","data.","decod","depends.","differ","differently.","disabl","don't","effect","enabl","encod","ensur","exampl","execut","fast","fast.","faster","featur","few","first","flatten","found,","function","given","go.","good.","good?","great","guid","immut","inlin","interest","intern","it'","json","jvm","languages,","late","lib","librari","life","long","look","lookup","macbook","magnitud","manag","mani","map","match","matter?","matters.","mean","measur","method","middlewar","middleware,","mix","more","mostli","move","much","multimethod","multipl","mutabl","new","non","ok","on","ops/sec","optim","order","origin","out","over","path","path)","payload.","pedest","pedestal).","pedestal,","perf","perf.","perform","performance.","performance:","possibl","precompute/compil","pro,","process","profile:","protocol","quick","r])","rational","re","readme,","real","realli","record","regress","reitit","request","resolut","resolv","rewritten.","rout","router","router.","routes)","run","same","sampl","second","seem","select","separ","shoudn't","sites,","slower","small","so,","spend","static","still","tabl","take","taken","test","tests,","tests?","thing","time","time,","tree","tri","trust","us","valu","well,","wildcard","work.","µs"]},"length":19},"tokenStore":{"root":{"1":{"0":{"0":{"0":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}},"docs":{}},"docs":{}},"docs":{},".":{"8":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"9":{"docs":{},".":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"docs":{}},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{}},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},",":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"1":{"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"docs":{}},"4":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"1":{"2":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{}},"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}}},"4":{"0":{"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}},"4":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"docs":{}},"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"5":{"0":{"0":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{},"%":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"3":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"docs":{}},"docs":{},"\"":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}},"1":{"2":{"3":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"docs":{}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"4":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}},".":{"9":{"docs":{},".":{"0":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"1":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},"\"":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"b":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{},"}":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"#":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},"{":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"]":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"d":{"docs":{},"b":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}},"'":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"{":{"docs":{},":":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"(":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"i":{"docs":{},"d":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}},"o":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"n":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224}}}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"i":{"docs":{},"g":{"docs":{},"w":{"docs":{},"h":{"docs":{},"e":{"docs":{},"e":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.043478260869565216},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"[":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"e":{"docs":{},"t":{"docs":{},"!":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"/":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"?":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"f":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"v":{"docs":{},"i":{"docs":{},"a":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}},"+":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"w":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},":":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.017094017094017096}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"c":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"d":{"docs":{},"b":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"s":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"k":{"docs":{},"i":{"docs":{},"k":{"docs":{},"k":{"docs":{},"a":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}}}}},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"docs":{}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"p":{"docs":{},"i":{"docs":{},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},")":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01729106628242075}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"]":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}}}}},"x":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0389908256880734}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},"e":{"docs":{},"r":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"]":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"e":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},";":{"docs":{"./":{"ref":"./","tf":0.11396011396011396},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.075},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.13043478260869565},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.10135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.17391304347826086},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.2545871559633027},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},";":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}},">":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.057971014492753624},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"[":{"0":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"1":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}},":":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"/":{"docs":{},":":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}}},"[":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"u":{"docs":{},"s":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}},"#":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},":":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"_":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"i":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},":":{"docs":{},":":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"p":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{},"c":{"docs":{},"]":{"docs":{},"}":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"d":{"docs":{},"b":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"p":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"%":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{},"(":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"a":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"advanced/":{"ref":"advanced/","tf":10.142857142857142}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"r":{"docs":{},"o":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"u":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}},"p":{"docs":{},"h":{"docs":{},"a":{"1":{"7":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}}}},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"s":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.14285714285714285},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.358333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3405797101449273},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"i":{"docs":{},"c":{"docs":{"basics/":{"ref":"basics/","tf":10.071428571428571}}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"d":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"i":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"a":{"docs":{},"v":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"t":{"docs":{},"a":{"2":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"o":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.023054755043228},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03625377643504532}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.02416918429003021}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015105740181269},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"s":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"!":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}}}}},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"d":{"docs":{},"e":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"s":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.030405405405405},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.360523665659617},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.01812688821752266},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"c":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.014814814814815},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.336354481369587}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.00709219858156},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}}}},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}}}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"e":{"docs":{},"x":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"c":{"docs":{},"t":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.01418439716312},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}},"t":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"l":{"docs":{},"s":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"x":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"a":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.012084592145015106},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.012084592145015106},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"s":{"docs":{},".":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"r":{"docs":{},"d":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"l":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"./":{"ref":"./","tf":10.002849002849002}}}}}}}},"?":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"i":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"f":{"docs":{},"o":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"r":{"docs":{},"m":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"g":{"docs":{},"n":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"t":{"docs":{},"'":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"y":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"n":{"docs":{},"k":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"f":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"e":{"docs":{},"a":{"docs":{},"f":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"s":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"o":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"o":{"docs":{},"k":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"n":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"?":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"p":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"a":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"k":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}},"l":{"docs":{},"i":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"c":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}},"a":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/":{"ref":"ring/","tf":0.16666666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":0.025280898876404494},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.3877139979859012},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.018126888217522},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},"]":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"d":{"docs":{},"e":{"docs":{},"?":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"s":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05309734513274336},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3840579710144922},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"!":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"i":{"docs":{},"v":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"w":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"t":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"d":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"m":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"w":{"docs":{},"i":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.025936599423631}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.023668639053254437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.433333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"s":{"docs":{},"s":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"y":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"l":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"r":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.016181229773462782}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":10.009708737864077}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"o":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.012084592145015106},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.027190332326283987},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"v":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.020172910662824207},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.045317220543806644}},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015105740181268883},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"l":{"docs":{},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/":{"ref":"ring/","tf":10.166666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":5.019662921348314},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.35714285714285715},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.0828402366863905},"basics/router.html":{"ref":"basics/router.html","tf":0.061946902654867256},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.370833333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.369565217391304},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.050675675675675},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.043478260869565},"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.11224489795918367},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.044444444444444446},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.032110091743119},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.021148036253776436},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.06796116504854369}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.039886039886039885},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.079646017699115},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.050724637681159424},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.037162162162162164},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812},"advanced/":{"ref":"advanced/","tf":0.2857142857142857},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.111111111111111},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":5.008426966292135},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}},"s":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.021739130434782608},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},":":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}},"o":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"u":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"]":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"e":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}},"d":{"docs":{},"e":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"\"":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"b":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.005917159763314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"e":{"docs":{},"p":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}}},"u":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"l":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"n":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"o":{"docs":{},"w":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"u":{"docs":{},"d":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"a":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"/":{"docs":{},"*":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"e":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"s":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},")":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"d":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"w":{"docs":{},"o":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"s":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}}}}}}},"r":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}},"d":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}},"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.012944983818770227}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.03550295857988166},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},":":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}},"=":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},">":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.012084592145015106},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}}}},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"v":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.006042296072507553}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"i":{"docs":{},"a":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.02962962962962963},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.004587155963303},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"u":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"/":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}},"^":{"docs":{},":":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.015105740181268883},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.00906344410876133}},"s":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"%":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"`":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"`":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"?":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"y":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0030211480362537764}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},")":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"v":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"µ":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"length":2115},"corpusTokens":["\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/api/admin/db\"})","\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"/api/ping\"})","\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/api/user/:id\",","\"/auth/login\")))","\"/favicon.ico\"})","\"/hello\")","\"/invalid\"})","\"/ping\"","\"/ping\")","\"/ping\"}","\"/ping\"})","\"/workspace/1/1\")))","\"0.1.0","\"0.1.123\"]","\"0.3.0\"]","\"0.4.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"everyth","\"forbidden\"}","\"gener","\"middlewar","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:meta","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:id}","#{:id}}","#{:session}","#{:user}","#{route}}","%","%)","%))","%))))","&","'())","'[clojure.set","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[criterium.cor","'[expound.alpha","'[reitit.cor","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[reitit.ring.middlewar","'[reitit.spec","'[reitit.spec])","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(a","(and","(app","(ataraxy,","(blank?","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec)","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(duct/integrant/macchiato","(effect","(figwheel","(fn","(fnil","(for","(handler","(here:","(if","(let","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(of","(onli","(option","(optional)","(or","(r/match","(r/partial","(r/rout","(r/router","(recommend","(records,","(reitit/match","(reitit/routes))","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/def","(s/explain","(s/key","(s/valid?","(seq","(set!","(set/subset?","(some","(st/spec","(start","(static","(stest/instru","(str","(updat","(via","(wildcard",")benchmark","...","...])","/","/:user","/:version/statu","/api/user/:id:","/bulk/:bulk","/public/*path","1,","1.8","1.9.0","1.9m","1000]","1]","1k","2","200","200,","2013","24x","2]]}","2})","2},","2}})","3","3.2","300","312m","3]]","3}}","4","403,","404}","404})))","50%","500x","530",":","::acc","::admin]","::admin}]","::coerc","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::singl","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]))",":a",":admin",":admin]]}",":admin}",":api)]}",":api]]",":api]]}",":append,",":arg",":auth/login]",":auth/recovery]",":bodi",":body,",":body}",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":coerc",":coercion",":coercion)",":command",":compil",":conflict",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":expand",":form,",":gen",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":into",":let",":linear",":lookup",":meta",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":prefix",":prepend,",":provides.",":put,",":put.",":queri",":query,",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":workspace/page]]))",":wrap",":wrap.",":y",";",";;","=","=>",">","?arg","?wrap.","[\"\"","[\"/:user","[\"/:version/status\"]])","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:users\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/api/orders/:id\"","[\"/api/ping\"","[\"/api/user/:id\"","[\"/auth/recovery/token/:token\"","[\"/bulk/:bulk","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public\"","[\"/public/*path\"]","[\"/user/:id\"","[\"/users\"","[\"/workspace/:project/:page\"","[\"pong\"]]])","[\"tenant1\"","[#(wrap","[%]","[...","[0]","[1","[1]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::roles]","[::total]))","[::x","[:api","[:command","[:rout","[:routes]","[:user/p","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[[wrap3","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion/gen","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[metosin/spec","[org.clojure/clojur","[org.clojure/clojurescript","[org.clojure/spec.alpha","[path","[request]","[requir","[respons","[thi","[this])","[wrap","[wrap2","[x","[{:key","[{{{:key","^:replac","^^^^^^","_]","`reitit.coercion.protocol/coercion`","`reitit/router)","abstract","acc","access","accumul","action","actual","ad","adapt","add","admin}}]]","admin}}]]]))","adopt","advanc","against","against.","algorithms,","allow","alpha17\"]","also,","alway","and/or","anonym","anyth","api","api.","app","app:","appli","applic","approaches,","arbitrari","arg","args.","argument","arguments.","arguments:","ariti","ask","async","at:","ataraxy)","attacht","author","authorizationmiddlewar","authrorizationmiddlewar","avail","base","baselin","basic","befor","behav","behavior","behind","below","bench","benchmarks.","best","beta2\"]","better.","bi","bide","bidi,","bit","bootstrapping:","both","box","bubblin'","build","built","busi","but,","call","callback.","called.","case","catch","cc])","chain","chain.","cheng","child","class","client","clojur","clojure(script)","clojure(script),","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","clojurescript,","closur","co","code","code,","coerc","coercer","coercion","coercion,","coercion.","coercion/gen","coercion])","colect","compar","compil","compilation,","compiler,","compilerexcept","complain","compojur","compojure,","components.","comput","configur","conflicit","conflict","conflicts!)","conflicts.","conflicts:","conform","conforming,","conj","contain","core","correctly:","cqr","creat","created,","created.","creation","currently,","custom","data","data,","data.","data:","db","db)","debug","decid","decod","default","default,","defin","defined):","defined,","defined.","definit","demonstr","depend","dependeci","depends.","descript","details.","detect","dev","develop","differ","differently.","differently:","direct","disabl","doc","document","doesn't","don't","done","done:","driven","dynam","e.g.","easi","easier","effec","effect","element","else\")","enabl","encod","enforc","ensur","entri","error","especi","etc.","etc.)","everyth","ex","exact","exampl","except","exceptioninfo","execut","exist","expand","expans","expect","explicit","expound","expound/printer)","expound])","extend","extens","extern","extract","fail","fails,","fals","false)","fast","fast,","fast.","faster","faster.","featur","few","first","fix","flatten","flattened:","fn","follow","following:","form","format","found","found,","found.","function","function,","function.","functions,","futur","gen","gener","get","given","go.","go:","good,","good.","good?","great","guard","guid","handl","handler","handler:","handler]","handler]))","handler])))","handler]]]]","handlers,","handlers.","handler}])))","handler}]]])))","handler}}]])))","handler}}]]])))","hard.","hash","heart","help","higher","higher)","hoc","hook","hooks.","id","id\"]","id)","id))","id)))","id))))","id/ord","id/orders\"]","id]","id]]))","idea","ident","identity]","identity]}","identity}}]]","identity}}]]))","id}","id},","ignored.","immut","implemen","implement","implementation.","in:","info","inform","information:","initi","inject","injectuserintorequestmiddlewar","inlin","insid","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","interceptor","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","inventories,","issu","it'","it?","itself","json","jvm","key","key,","keys,","keys:","keyword","keywords)","kind","know","languages,","late","latter","leaf","less","level","lib","librari","library.","life","link","list","local","log","long","look","lookup","lookup.","macbook","magnitud","make","malipul","manag","mani","manipul","manual","map","map,","map.","match","match)","match,","match.","match?","matched,","matches,","matter?","matters.","mean","measur","merg","merge.","message.","messages:","meta","meta,","method","method.","methods.","middlewar","middleware)","middleware,","middleware.","middleware/interceptor","middleware:","middleware])","miss","mix","mode?","mode?]","more","more.","mostli","mount","mount.\"","move","much","multimethod","multipl","mutabl","naiv","name","name!","name.","name]","names:","namespac","need","nest","new","nil","nil,","nil.","nil:","nil]","node.j","non","normal","note","note:","nothing.\"","ok","on","opaque,","ops/sec","opt","optim","optin","option","option,","optionally,","options.","opts)]","opts]}","order","order\"","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters/gen","parameters:","params]))","part","partial","partialmatch","partialmatch,","pass","path","path)","path])","payload.","pedest","pedestal).","pedestal,","penalty.","perf","perf.","perform","performance,","performance.","performance:","pluggabl","po","possibl","pre","precompute/compil","predicate:","prefix","pretti","principl","print","println","pro,","problems.","process","processing,","processing.","produc","profile:","programmatically:","project:","propos","protocol","protocol)","protocol,","protocol.","protocol:","provid","public","purpose:","qualifi","quick","r])","raise))))))","raise)))))))}))","raise]","rational","raw","rc1\"]","re","read","readi","readme,","real","realli","reason","reasoning:","record","records.","recurs","registri","regress","reitit","reitit,","reitit.core/expand","reitit.core/expand)","reitit.core/match","reitit.core/rout","reitit.core/router:","reitit.core/throw","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","reitit.ring.coercion:","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relev","request","request)","request)))","request)))))","request.","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response.","response]","responses)","rest","result","results,","results:","resut","retriev","return","returned,","returned:","revers","rewritten.","ring","ring,","ring.","ring])","role","roles)))","roles:","roles]}})))","root","rout","route))))","route,","route.","route:","router","router)","router).","router,","router.","router:","routers.","routes)","routes):","routes,","routes.","routes:","routing)","routing,","routing.","routing:","run","runtim","s/*explain","s/key","s])","same","sampl","satisfi","scene","second","see","seem","select","separ","separately:","sequenti","sequential)","set","set,","set])","sever","shape","ship","shipped,","shoudn't","show","side","simpl","singl","sites,","slow,","slower","small","snapshot\"]","so,","someth","sound","sources.","spec","spec/coercion}})))","spec:","spec])","special","specs.","spend","st])","start","static","statu","step","stest])","still","still,","sting","str)})","string","stuctur","style)","submap","submap.","succeeds,","suitabl","super","support","swagger:","syntax","system.","tabl","table.","take","taken","target","test","tests,","tests?","them.","thing","things.\"","third","throw","thrown.","thrown:","thu","time","time,","time.","to,","to:","todo","togeth","too.","tool","tools\"","tools.cor","tools.core/spec.","tools])])","top","toward","transform","tree","tree:","trees,","trees.","tri","true","trust","turn","two","type","typo","un","under","under:","understood","undrstand","unreachanle.","until","unwrap","us","used)","user","user\"","user]","user]}}]","usually,","val:","valid","valu","values.","vector","vector.","version:","via","want,","way","welcom","well,","whole","wildcard","with?","work","work.","worlds.","wrap","wrap.","wrap2","wrap3","wrap})","wrap}))","written","x","y)}})}}]]","y]}","yield","zero","{200","{::role","{:bodi","{:conflict","{:get","{:handler","{:id","{:interceptor","{:meta","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:statu","{:total","{:uri","{:x","{method","{rout","{}","µs"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Introduction","keywords":"","body":"Introduction\nReitit is a small Clojure(Script) library for data-driven routing.\n\nSimple data-driven route syntax\nRoute conflict resolution\nFirst-class route meta-data\nBi-directional routing\nPluggable coercion (clojure.spec)\nsupports both Middleware & Interceptors\nExtendable\nFast\n\nTo use Reitit, add the following dependecy to your project:\n[metosin/reitit \"0.1.0-SNAPSHOT\"]\n\nOptionally, the parts can be required separately:\n[metosin/reitit-core \"0.1.0-SNAPSHOT\"] ; just the router\n[metosin/reitit-ring \"0.1.0-SNAPSHOT\"] ; ring-router\n[metosin/reitit-spec \"0.1.0-SNAPSHOT\"] ; spec-coercion\n\nExamples\nSimple router\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api/ping\" ::ping]\n [\"/api/orders/:id\" ::order-by-id]]))\n\nRouting:\n(r/match-by-path router \"/api/ipa\")\n; nil\n\n(r/match-by-path router \"/api/ping\")\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-path router \"/api/orders/1\")\n; #Match{:template \"/api/orders/:id\"\n; :meta {:name ::order-by-id}\n; :result nil\n; :params {:id \"1\"}\n; :path \"/api/orders/1\"}\n\nReverse-routing:\n(r/match-by-name router ::ipa)\n; nil\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-name router ::order-by-id)\n; #PartialMatch{:template \"/api/orders/:id\"\n; :meta {:name :user/order-by-id}\n; :result nil\n; :params nil\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::order-by-id))\n; true\n\n(r/match-by-name router ::order-by-id {:id 2})\n; #Match{:template \"/api/orders/:id\",\n; :meta {:name ::order-by-id},\n; :result nil,\n; :params {:id 2},\n; :path \"/api/orders/2\"}\n\nRing-router\nRing-router adds support for :handler functions, :middleware and routing based on :request-method. It also supports pluggable parameter coercion (clojure.spec), data-driven middleware, route and middleware compilation, dynamic extensions and more.\n(require '[reitit.ring :as ring])\n\n(def handler [_]\n {:status 200, :body \"ok\"})\n\n(defn wrap [handler id]\n (fn [request]\n (update (handler request) :wrap (fnil conj '()) id)))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [[wrap :api]]}\n [\"/ping\" {:get handler\n :name ::ping}]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/users\" {:get handler\n :post handler}]]])))\n\nRouting:\n(app {:request-method :get, :uri \"/api/admin/users\"})\n; {:status 200, :body \"ok\", :wrap (:api :admin}\n\n(app {:request-method :put, :uri \"/api/admin/users\"})\n; nil\n\nReverse-routing:\n(require '[reitit.core :as r])\n\n(-> app (ring/get-router) (r/match-by-name ::ping))\n; #Match{:template \"/api/ping\"\n; :meta {:middleware [[#object[user$wrap] :api]]\n; :get {:handler #object[user$handler]}\n; :name ::ping}\n; :result #Methods{...}\n; :params nil\n; :path \"/api/ping\"}\n\n"},"basics/":{"url":"basics/","title":"Basics","keywords":"","body":"Basics\n\nRoute syntax\nRouter\nPath-based Routing\nName-based Routing\nRoute data\nRoute conflicts\n\n"},"basics/route_syntax.html":{"url":"basics/route_syntax.html","title":"Route syntax","keywords":"","body":"Route Syntax\nRoutes are defined as vectors of String path and optional (non-sequential) route argument child routes.\nRoutes can be wrapped in vectors and lists and nil routes are ignored.\nPaths can have path-parameters (:id) or catch-all-parameters (*path).\nExamples\nSimple route:\n[\"/ping\"]\n\nTwo routes:\n[[\"/ping\"]\n [\"/pong\"]]\n\nRoutes with route arguments:\n[[\"/ping\" ::ping]\n [\"/pong\" {:name ::pong}]]\n\nRoutes with path parameters:\n[[\"/users/:user-id\"]\n [\"/api/:version/ping\"]]\n\nRoute with catch-all parameter:\n[\"/public/*path\"]\n\nNested routes:\n[\"/api\"\n [\"/admin\" {:middleware [::admin]}\n [\"\" ::admin]\n [\"/db\" ::db]]\n [\"/ping\" ::ping]]\n\nSame routes flattened:\n[[\"/api/admin\" {:middleware [::admin], :name ::admin}]\n [\"/api/admin/db\" {:middleware [::admin], :name ::db}]\n [\"/api/ping\" {:name ::ping}]]\n\nGenerating routes\nAs routes are just data, it's easy to create them programmatically:\n(defn cqrs-routes [actions dev-mode?]\n [\"/api\" {:interceptors [::api ::db]}\n (for [[type interceptor] actions\n :let [path (str \"/\" (name interceptor))\n method (condp = type\n :query :get\n :command :post)]]\n [path {method {:interceptors [interceptor]}}])\n (if dev-mode? [\"/dev-tools\" ::dev-tools])])\n\n(cqrs-routes\n [[:query 'get-user]\n [:command 'add-user]\n [:command 'add-order]]\n false)\n; [\"/api\" {:interceptors [::api ::db]}\n; ([\"/get-user\" {:get {:interceptors [get-user]}}]\n; [\"/add-user\" {:post {:interceptors [add-user]}}]\n; [\"/add-order\" {:post {:interceptors [add-order]}}])\n; nil]\n\n"},"basics/router.html":{"url":"basics/router.html","title":"Router","keywords":"","body":"Router\nRoutes are just data and for routing, we need a router instance satisfying the reitit.core/Router protocol. Routers are created with reitit.core/router function, taking the raw routes and optionally an options map.\nThe Router protocol:\n(defprotocol Router\n (router-name [this])\n (routes [this])\n (options [this])\n (route-names [this])\n (match-by-path [this path])\n (match-by-name [this name] [this name params]))\n\nCreating a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nName of the created router:\n(r/router-name router)\n; :mixed-router\n\nThe flattened route tree:\n(r/routes router)\n; [[\"/api/ping\" {:name :user/ping}]\n; [\"/api/user/:id\" {:name :user/user}]]\n\nBehind the scenes\nWhen router is created, the following steps are done:\n\nroute tree is flattened\nroute arguments are expanded (via reitit.core/Expand protocol) and optionally coerced\nroute conflicts are resolved\nactual router implementation is selected and created\noptionally route meta-data gets compiled\n\n"},"basics/path_based_routing.html":{"url":"basics/path_based_routing.html","title":"Path-based Routing","keywords":"","body":"Path-based routing\nPath-based routing is done using the reitit.core/match-by-path function. It takes the router and path as arguments and returns one of the following:\n\nnil, no match\nPartialMatch, path matched, missing path-parameters (only in reverse-routing)\nMatch, exact match\n\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nNo match returns nil:\n(r/match-by-path router \"/hello\")\n; nil\n\nMatch provides the route information:\n(r/match-by-path router \"/api/user/1\")\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\n"},"basics/name_based_routing.html":{"url":"basics/name_based_routing.html","title":"Name-based Routing","keywords":"","body":"Name-based (reverse) routing\nAll routes which have :name route data defined, can also be matched by name.\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nListing all route names:\n(r/route-names router)\n; [:user/ping :user/user]\n\nNo match returns nil:\n(r/match-by-name router ::kikka)\nnil\n\nMatching a route:\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\nIf not all path-parameters are set, a PartialMatch is returned:\n(r/match-by-name router ::user)\n; #PartialMatch{:template \"/api/user/:id\",\n; :meta {:name :user/user},\n; :result nil,\n; :params nil,\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::user))\n; true\n\nWith provided path-parameters:\n(r/match-by-name router ::user {:id \"1\"})\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\nThere is also a exception throwing version:\n(r/match-by-name! router ::user)\n; ExceptionInfo missing path-params for route /api/user/:id: #{:id}\n\n"},"basics/route_data.html":{"url":"basics/route_data.html","title":"Route data","keywords":"","body":"Route data\nRoute data is the heart of this library. Routes can have any data attachted to them. Data is interpeted either by the client application or the Router via it's :coerce and :compile hooks. This enables co-existence of both adaptive and principled components.\nRoutes can have a non-sequential route argument that is expanded into route data map when a router is created.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\nThe expanded route data can be retrieved from a router with routes and is returned with match-by-path and match-by-name in case of a route match.\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\nNested route data\nFor nested route trees, route data is accumulated recursively from root towards leafs using meta-merge. Default behavior for colections is :append, but this can be overridden to :prepend, :replace or :displace using the target meta-data.\nAn example router with nested data:\n(def router\n (r/router\n [\"/api\" {:interceptors [::api]}\n [\"/ping\" ::ping]\n [\"/admin\" {:roles #{:admin}}\n [\"/users\" ::users]\n [\"/db\" {:interceptors [::db]\n :roles ^:replace #{:db-admin}}]]]))\n\nResolved route tree:\n(r/routes router)\n; [[\"/api/ping\" {:interceptors [::api]\n; :name :user/ping}]\n; [\"/api/admin/users\" {:interceptors [::api]\n; :roles #{:admin}\n; :name ::users} nil]\n; [\"/api/admin/db\" {:interceptors [::api ::db]\n; :roles #{:db-admin}}]]\n\nExpansion\nBy default, reitit/Expand protocol is used to expand the route arguments. It expands keywords into :name and functions into :handler key in the route data map. It's easy to add custom expanders and one can chenge the whole expand implementation via router options.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n"},"basics/route_conflicts.html":{"url":"basics/route_conflicts.html","title":"Route conflicts","keywords":"","body":"Route conflicts\nMany routing libraries allow multiple matches for a single path lookup. Usually, the first match is used and the rest are effecively unreachanle. This is not good, especially if route tree is merged from multiple sources.\nReitit resolves this by running explicit conflicit resolution when a router is called. Conflicting routes are passed into a :conflicts callback. Default implementation throws ex-info with a descriptive message.\nExamples router with conflicting routes:\n(require '[reitit.core :as r])\n\n(def routes\n [[\"/ping\"]\n [\"/:user-id/orders\"]\n [\"/bulk/:bulk-id\"]\n [\"/public/*path\"]\n [\"/:version/status\"]])\n\nBy default, ExceptionInfo is thrown:\n(r/router routes)\n; CompilerException clojure.lang.ExceptionInfo: Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\nJust logging the conflicts:\n(r/router\n routes\n {:conflicts (comp println reitit/conflicts-str)})\n; Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\n"},"advanced/":{"url":"advanced/","title":"Advanced","keywords":"","body":"Advanced\n\nConfiguring routers\nDifferent Routers\nRoute Validation\n\n"},"advanced/configuring_routers.html":{"url":"advanced/configuring_routers.html","title":"Configuring routers","keywords":"","body":"Configuring Routers\nRouters can be configured via options. Options allow things like clojure.spec validation for meta-data and fast, compiled handlers. The following options are available for the reitit.core/router:\n\n\n\nkey\ndescription\n\n\n\n\n:path\nBase-path for routes\n\n\n:routes\nInitial resolved routes (default [])\n\n\n:meta\nInitial expanded route-meta vector (default [])\n\n\n:expand\nFunction of arg opts => meta to expand route arg to route meta-data (default reitit.core/expand)\n\n\n:coerce\nFunction of route opts => route to coerce resolved route, can throw or return nil\n\n\n:compile\nFunction of route opts => result to compile a route handler\n\n\n:conflicts\nFunction of {route #{route}} => side-effect to handle conflicting routes (default reitit.core/throw-on-conflicts!)\n\n\n:router\nFunction of routes opts => router to override the actual router implementation\n\n\n\n"},"advanced/different_routers.html":{"url":"advanced/different_routers.html","title":"Different Routers","keywords":"","body":"Different Routers\nReitit ships with several different implementations for the Router protocol, originally based on the Pedestal implementation. router function selects the most suitable implementation by inspecting the expanded routes. The implementation can be set manually using :router option, see configuring routers.\n\n\n\nrouter\ndescription\n\n\n\n\n:linear-router\nMatches the routes one-by-one starting from the top until a match is found. Works with any kind of routes. Slow, but works with all route trees.\n\n\n:lookup-router\nFast router, uses hash-lookup to resolve the route. Valid if no paths have path or catch-all parameters and there are no Route conflicts.\n\n\n:mixed-router\nCreates internally a :prefix-tree-router and a :lookup-router and used them to effectively get best-of-both-worlds. Valid only if there are no Route conflicts.\n\n\n::single-static-path-router\nSuper fast router: sting-matches the route. Valid only if there is one static route.\n\n\n:prefix-tree-router\nRouter that creates a prefix-tree out of an route table. Much faster than :linear-router. Valid only if there are no Route conflicts.\n\n\n\nThe router name can be asked from the router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/api/:users\" ::users]]))\n\n(r/router-name router)\n; :mixed-router\n\n"},"advanced/route_validation.html":{"url":"advanced/route_validation.html","title":"Route Validation","keywords":"","body":"Route validation\nNamespace reitit.spec contains clojure.spec definitions for raw-routes, routes, router and router options.\nNOTE: Use of specs requires to use one of the following:\n\n[org.clojure/clojurescript \"1.9.660\"] (or higher)\n[org.clojure/clojure \"1.9.0-RC1\"] (or higher)\n[clojure-future-spec \"1.9.0-alpha17\"] (if Clojure 1.8 is used)\n\nExample\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec :as spec])\n\n(def routes-from-db\n [\"tenant1\" ::tenant1])\n\n(s/valid? ::spec/raw-routes routes-from-db)\n; false\n\n(s/explain ::spec/raw-routes routes-from-db)\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/path at: [:route :path] predicate: (or (blank? %) (starts-with? % \"/\"))\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; In: [1] val: :user/tenant1 fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; :clojure.spec.alpha/spec :reitit.spec/raw-routes\n; :clojure.spec.alpha/value [\"tenant1\" :user/tenant1]\n\nAt development time\nreitit.core/router can be instrumented and use something like expound to pretty-print the spec problems.\nFirst add a :dev dependency to:\n[expound \"0.3.0\"] ; or higher\n\nSome bootstrapping:\n(require '[clojure.spec.test.alpha :as stest])\n(require '[expound.alpha :as expound])\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec])\n\n(stest/instrument `reitit/router)\n(set! s/*explain-out* expound/printer)\n\nAnd we are ready to go:\n(require '[reitit.core :as r])\n\n(r/router\n [\"/api\"\n [\"/public\"\n [\"/ping\"]\n [\"pong\"]]])\n\n; CompilerException clojure.lang.ExceptionInfo: Call to #'reitit.core/router did not conform to spec:\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([\"/api\" ...])\n; ^^^^^^\n;\n; should satisfy\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; or\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([... [... ... [\"pong\"]]])\n; ^^^^^^\n;\n; should satisfy\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; or\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/path:\n; (clojure.spec.alpha/and\n; clojure.core/string?\n; (clojure.core/fn\n; [%]\n; (clojure.core/or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\"))))\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -------------------------\n; Detected 2 errors\n\nValidating route data\nTODO\n"},"ring/":{"url":"ring/","title":"Ring","keywords":"","body":"Ring\n\nRing-router\nDynamic extensions\nData-driven Middleware\nParameter coercion\nCompiling middleware\n\n"},"ring/ring.html":{"url":"ring/ring.html","title":"Ring-router","keywords":"","body":"Ring Router\nRing-router adds support for handlers, middleware and routing based on :request-method. Ring-router is created with reitit.ring/router function. It runs a custom route compiler, creating a optimized stucture for handling route matches, with compiled middleware chain & handlers for all request methods. It also ensures that all routes have a :handler defined.\nSimple Ring app:\n(require '[reitit.ring :as ring])\n\n(defn handler [_]\n {:status 200, :body \"ok\"})\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler])))\n\nApplying the handler:\n(app {:request-method :get, :uri \"/favicon.ico\"})\n; nil\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\nThe expanded routes shows the compilation results:\n(-> app (ring/get-router) (reitit/routes))\n; [[\"/ping\"\n; {:handler #object[...]}\n; #Methods{:any #Endpoint{:meta {:handler #object[...]},\n; :handler #object[...],\n; :middleware []}}]]\n\nNote that the compiled resuts as third element in the route vector.\nRequest-method based routing\nHandler are also looked under request-method keys: :get, :head, :patch, :delete, :options, :post or :put. Top-level handler is used if request-method based handler is not found.\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" {:name ::ping\n :get handler\n :post handler}])))\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\n(app {:request-method :put, :uri \"/ping\"})\n; nil\n\nName-based reverse routing:\n(-> app\n (ring/get-router)\n (reitit/match-by-name ::ping)\n :path)\n; \"/ping\"\n\nMiddleware\nMiddleware can be added with a :middleware key, either to top-level or under :request-method submap. It's value should be a vector value of the following:\n\nnormal ring middleware function handler -> request -> response\nvector of middleware function handler ?args -> request -> response and optinally it's args.\n\nA middleware and a handler:\n(defn wrap [handler id]\n (fn [request]\n (handler (update request ::acc (fnil conj []) id))))\n\n(defn handler [{:keys [::acc]}]\n {:status 200, :body (conj acc :handler)})\n\nApp with nested middleware:\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [#(wrap % :api)]}\n [\"/ping\" handler]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/db\" {:middleware [[wrap :db]]\n :delete {:middleware [[wrap :delete]]\n :handler handler}}]]])))\n\nMiddleware is applied correctly:\n(app {:request-method :delete, :uri \"/api/ping\"})\n; {:status 200, :body [:api :handler]}\n\n(app {:request-method :delete, :uri \"/api/admin/db\"})\n; {:status 200, :body [:api :admin :db :delete :handler]}\n\nNot found\nIf no routes match, nil is returned, which is not understood by Ring.\nEnabling custom error messages:\n(def app\n (some-fn\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler]))\n (constantly {:status 404})))\n\n(app {:uri \"/invalid\"})\n; {:status 404}\n\nAsync Ring\nAll built-in middleware provide both 2 and 3-arity and are compiled for both Clojure & ClojureScript, so they work with Async Ring and Node.js too.\n"},"ring/dynamic_extensions.html":{"url":"ring/dynamic_extensions.html","title":"Dynamic extensions","keywords":"","body":"Dynamic extensions\nring-handler injects the Match into a request and it can be extracted at runtime with reitit.ring/get-match. This can be used to build ad-hoc extensions to the system.\nExample middleware to guard routes based on user roles:\n(require '[clojure.set :as set])\n\n(defn wrap-enforce-roles [handler]\n (fn [{:keys [::roles] :as request}]\n (let [required (some-> request (ring/get-match) :meta ::roles)]\n (if (and (seq required) (not (set/subset? required roles)))\n {:status 403, :body \"forbidden\"}\n (handler request)))))\n\nMounted to an app via router meta-data (effecting all routes):\n(def handler (constantly {:status 200, :body \"ok\"}))\n\n(def app\n (ring/ring-handler\n (ring/router\n [[\"/api\"\n [\"/ping\" handler]\n [\"/admin\" {::roles #{:admin}}\n [\"/ping\" handler]]]]\n {:meta {:middleware [wrap-enforce-roles]}})))\n\nAnonymous access to public route:\n(app {:request-method :get, :uri \"/api/ping\"})\n; {:status 200, :body \"ok\"}\n\nAnonymous access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\"})\n; {:status 403, :body \"forbidden\"}\n\nAuthorized access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\", ::roles #{:admin}})\n; {:status 200, :body \"ok\"}\n\n"},"ring/data_driven_middleware.html":{"url":"ring/data_driven_middleware.html","title":"Data-driven Middleware","keywords":"","body":"Data-driven Middleware\nRing defines middleware as a function of type handler & opts => request => response. It's easy to undrstand and enables great performance, but makes the middleware-chain opaque, making things like documentation and debugging hard.\nReitit does things bit differently:\n\nmiddleware is defined as a vector (of middleware) enabling the chain to be malipulated before turned into the optimized runtime chain.\nmiddleware can be defined as first-class data entries\n\nMiddleware as data\nEverything that is defined inside the :middleware vector in the route data is coerced into reitit.ring.middleware/Middleware Records with the help of reitit.ring.middleware/IntoMiddleware Protocol. By default, it transforms functions, maps and Middleware records. For the actual\nRecords can have arbitrary keys, but the default keys have a special purpose:\n\n\n\nkey\ndescription\n\n\n\n\n:name\nName of the middleware as a qualified keyword (optional)\n\n\n:wrap\nThe actual middleware function of handler & args => request => response\n\n\n:gen-wrap\nMiddleware function generation function, see compiling middleware.\n\n\n\nMiddleware Records are accessible in their raw form in the compiled route results, thus available for inventories, creating api-docs etc.\nFor the actual request processing, the Records are unwrapped into normal functions, yielding zero runtime penalty.\nCreating Middleware\nThe following produce identical middleware runtime function.\nFunction\n(defn wrap [handler id]\n (fn [request]\n (handler (update request ::acc (fnil conj []) id))))\n\nRecord\n(require '[reitit.ring.middleware :as middleware])\n\n(def wrap2\n (middleware/create\n {:name ::wrap2\n :description \"Middleware that does things.\"\n :wrap wrap}))\n\nMap\n(def wrap3\n {:name ::wrap3\n :description \"Middleware that does things.\"\n :wrap wrap})\n\nUsing Middleware\n(require '[reitit.ring :as ring])\n\n(defn handler [{:keys [::acc]}]\n {:status 200, :body (conj acc :handler)})\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [[wrap 1] [wrap2 2]]}\n [\"/ping\" {:get {:middleware [[wrap3 3]]\n :handler handler}}]])))\n\nAll the middleware are called correctly:\n(app {:request-method :get, :uri \"/api/ping\"})\n; {:status 200, :body [1 2 3 :handler]}\n\nFuture\nSome things bubblin' under:\n\nHooks to manipulate the :middleware chain before compilation\nSupport Keyword expansion into Middleware, enabling external Middleware Registries (duct/integrant/macchiato -style)\nSupport Middleware dependency resolution with new keys :requires and :provides. Values are set of top-level keys of the request. e.g.\nInjectUserIntoRequestMiddleware requires #{:session} and provides #{:user}\nAuthorizationMiddleware requires #{:user}\n\n\nSupport partial s/keys route data specs with Middleware (and Router). Merged together to define sound spec for the route data and/or route data for a given route.\ne.g. AuthrorizationMiddleware has a spec defining :roles key (a set of keywords)\nDocumentation for the route data\nRoute data is validated against the spec:\nComplain of keywords that are not handled by anything\nPropose fixes for typos (Figwheel-style)\n\n\n\n\n\nIdeas welcome & see issues for details.\n"},"ring/parameter_coercion.html":{"url":"ring/parameter_coercion.html","title":"Parameter coercion","keywords":"","body":"Parameter coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api. Reitit ships with reitit.ring.coercion.spec/SpecCoercion providing implemenation for clojure.spec and data-specs.\nNOTE: Before Clojure 1.9.0 is shipped, to use the spec-coercion, one needs to add the following dependencies manually to the project:\n[org.clojure/clojure \"1.9.0-beta2\"]\n[org.clojure/spec.alpha \"0.1.123\"]\n[metosin/spec-tools \"0.4.0\"]\n\nRing request and response coercion\nTo use Coercion with Ring, one needs to do the following:\n\nDefine parameters and responses as data into route meta-data, in format adopted from ring-swagger:\n:parameters map, with submaps for different parameters: :query, :body, :form, :header and :path. Parameters are defined in the format understood by the Coercion.\n:responses map, with response status codes as keys (or :default for \"everything else\") with maps with :schema and optionally :description as values.\n\n\nDefine a Coercion to route meta-data under :coercion\nMount request & response coercion middleware to the routes (recommended to mount to all routes under router as they mounted only to routes which have the parameters / responses defined):\nreitit.ring.coercion/gen-wrap-coerce-parameters\ngen-wrap-coerce-parameters/gen-wrap-coerce-responses\n\n\n\nIf the request coercion succeeds, the coerced parameters are injected into request under :parameters.\nIf either request or response coercion fails, an descriptive error is thrown.\nExample with data-specs\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body {:x int?, :y int?}}\n :responses {200 {:schema {:total pos-int?}}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\nExample with specs\nCurrently, clojure.spec doesn't support runtime transformations via conforming, so one needs to wrap all specs with spec-tools.core/spec.\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n(require '[clojure.spec.alpha :as s])\n(require '[spec-tools.core :as st])\n\n(s/def ::x (st/spec int?))\n(s/def ::y (st/spec int?))\n(s/def ::total int?)\n(s/def ::request (s/keys :req-un [::x ::y]))\n(s/def ::response (s/keys :req-un [::total]))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body ::request}\n :responses {200 {:schema ::response}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\n"},"ring/compiling_middleware.html":{"url":"ring/compiling_middleware.html","title":"Compiling middleware","keywords":"","body":"Compiling Middleware\nThe dynamic extensions is a easy way to extend the system. To enable fast lookups into route data, we can compile them into any shape (records, functions etc.) we want, enabling fast access at request-time.\nStill, we can do much better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. It can also decide not to mount itself by returning nil. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?\nTo enable this we use middleware records :gen-wrap key instead of the normal :wrap. :gen-wrap expects a function of route-meta router-opts => ?wrap.\nTo demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen-wrap. Actual codes can be found in reitit.ring.coercion:\nNaive\n\nReads the compiled route information on every request.\n\n(defn wrap-coerce-response\n \"Pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise will do nothing.\"\n [handler]\n (fn\n ([request]\n (let [response (handler request)\n method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (coerce-response coercers request response))\n response)))\n ([request respond raise]\n (let [method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (handler request #(respond (coerce-response coercers request %))))\n (handler request respond raise))))))\n\nCompiled\n\nRoute information is provided via a closure\nPre-compiled coercers\nMounts only if :coercion and :responses are defined for the route\n\n(require '[reitit.ring.middleware :as middleware])\n\n(def gen-wrap-coerce-response\n \"Generator for pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise does not mount.\"\n (middleware/create\n {:name ::coerce-response\n :gen-wrap (fn [{:keys [responses coercion opts]} _]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (fn [handler]\n (fn\n ([request]\n (coerce-response coercers request (handler request)))\n ([request respond raise]\n (handler request #(respond (coerce-response coercers request %)) raise)))))))}))\n\nThe latter has 50% less code, is easier to reason about and is much faster.\n"},"performance.html":{"url":"performance.html","title":"Performance","keywords":"","body":"Performance\nThere are many great routing libraries for Clojure(Script), but not many are optimized for perf. Reitit tries to be both great in features and really fast. Originally the routing was adopted from Pedestal, but it has been since mostly rewritten.\nRationale\n\nMultiple routing algorithms, select for for a given route tree\nRoute flattening and re-ordering\nManaged mutability over Immutability\nPrecompute/compile as much as possible (matches, middleware, routes)\nUse abstractions that enable JVM optimizations\nUse small functions to enable JVM Inlining\nProtocols over Multimethods\nRecords over Maps\nAlways be measuring\nDon't trust the (micro-)benchmarks\n\nDoes routing performance matter?\nWell, it depends. Some tested routing libs seem to spend more time resolving the routes than it takes to encode & decode a 1k JSON payload. For busy sites, this actually matters.\nExample\nThe routing sample taken from bide README, run with a Late 2013 MacBook Pro, with the perf profile:\n(require '[reitit.core :as r])\n(require '[criterium.core :as cc])\n\n(def routes\n (r/router\n [[\"/auth/login\" :auth/login]\n [\"/auth/recovery/token/:token\" :auth/recovery]\n [\"/workspace/:project/:page\" :workspace/page]]))\n\n;; Execution time mean : 3.2 µs -> 312M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/auth/login\")))\n\n;; Execution time mean : 530 µs -> 1.9M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/workspace/1/1\")))\n\nIs that good?\nBased on some quick perf tests, the first (static path) lookup is 300-500x faster and the second (wildcard path) lookup is 4-24x faster that the other tested routing libs (ataraxy, bidi, compojure and pedestal).\nBut, one shoudn't trust the benchmarks. Many libraries (here: compojure, pedestal and ataraxy) always match also on the request-method so they do more work. Also, real-life routing tables might look different and different libs might behave differently.\nBut, the perf should be good.\nValue of perf tests?\nReal value of perf tests is to get a internal baseline to optimize against. Also, to ensure that new features don't regress the performance.\nIt might be interesting to look out of the box and compare the fast Clojure routing libs to routers in other languages, like the routers in Go.\nPerformance guides\nFew things that have an effect on performance:\n\nWildcard-routes are an order of magnitude slower than static routes\nIt's ok to mix non-wildcard and wildcard routes in a same routing tree as long as you don't disable the conflict resolution => if no conflicting routes are found, a :mixed-router can be created, which internally has a fast static path router and a separate wildcard-router. So, the static paths are still fast.\nMove computation from request processing time into creation time, using by compiling middleware & route data.\n\n"}}}
\ No newline at end of file