From 9f157c83880b80c49504f55487c7bd0a3fe29930 Mon Sep 17 00:00:00 2001 From: Automatic build Date: Sun, 3 Dec 2017 15:53:33 +0000 Subject: [PATCH] Build book from commit 653743a25f097444b6b08765578bd8dee95fde2c [skip ci] --- advanced/configuring_routers.html | 2 +- advanced/different_routers.html | 2 +- advanced/index.html | 2 +- advanced/route_validation.html | 2 +- basics/index.html | 2 +- basics/name_based_routing.html | 2 +- basics/path_based_routing.html | 2 +- basics/route_conflicts.html | 2 +- basics/route_data.html | 2 +- basics/route_syntax.html | 2 +- basics/router.html | 2 +- faq.html | 2 +- index.html | 2 +- performance.html | 2 +- ring/coercion.html | 30 +++++++++++++++--------------- ring/compiling_middleware.html | 4 ++-- ring/data_driven_middleware.html | 2 +- ring/dynamic_extensions.html | 2 +- ring/index.html | 2 +- ring/ring.html | 2 +- search_index.json | 2 +- 21 files changed, 36 insertions(+), 36 deletions(-) diff --git a/advanced/configuring_routers.html b/advanced/configuring_routers.html index de5c700f..4a11801d 100644 --- a/advanced/configuring_routers.html +++ b/advanced/configuring_routers.html @@ -525,7 +525,7 @@ diff --git a/advanced/different_routers.html b/advanced/different_routers.html index 50e2e4c8..6d950800 100644 --- a/advanced/different_routers.html +++ b/advanced/different_routers.html @@ -524,7 +524,7 @@ diff --git a/advanced/index.html b/advanced/index.html index f3946db1..2df294f2 100644 --- a/advanced/index.html +++ b/advanced/index.html @@ -487,7 +487,7 @@ diff --git a/advanced/route_validation.html b/advanced/route_validation.html index e314ad05..2b5069f0 100644 --- a/advanced/route_validation.html +++ b/advanced/route_validation.html @@ -636,7 +636,7 @@ diff --git a/basics/index.html b/basics/index.html index 7eb2a870..6328e024 100644 --- a/basics/index.html +++ b/basics/index.html @@ -490,7 +490,7 @@ diff --git a/basics/name_based_routing.html b/basics/name_based_routing.html index 26d5bc13..71fa82bf 100644 --- a/basics/name_based_routing.html +++ b/basics/name_based_routing.html @@ -531,7 +531,7 @@ diff --git a/basics/path_based_routing.html b/basics/path_based_routing.html index 9a87a85a..452dc4c7 100644 --- a/basics/path_based_routing.html +++ b/basics/path_based_routing.html @@ -509,7 +509,7 @@ diff --git a/basics/route_conflicts.html b/basics/route_conflicts.html index 13f1afec..21416700 100644 --- a/basics/route_conflicts.html +++ b/basics/route_conflicts.html @@ -526,7 +526,7 @@ diff --git a/basics/route_data.html b/basics/route_data.html index 15142fd4..a55edc6c 100644 --- a/basics/route_data.html +++ b/basics/route_data.html @@ -560,7 +560,7 @@ diff --git a/basics/route_syntax.html b/basics/route_syntax.html index f4cf2edd..4a73e20d 100644 --- a/basics/route_syntax.html +++ b/basics/route_syntax.html @@ -539,7 +539,7 @@ diff --git a/basics/router.html b/basics/router.html index 18567220..95f44d6d 100644 --- a/basics/router.html +++ b/basics/router.html @@ -519,7 +519,7 @@ diff --git a/faq.html b/faq.html index 005c26a0..77b7215e 100644 --- a/faq.html +++ b/faq.html @@ -476,7 +476,7 @@ diff --git a/index.html b/index.html index 7952e63c..ad8f3aa0 100644 --- a/index.html +++ b/index.html @@ -593,7 +593,7 @@ diff --git a/performance.html b/performance.html index ae80a950..3039bdf6 100644 --- a/performance.html +++ b/performance.html @@ -562,7 +562,7 @@ diff --git a/ring/coercion.html b/ring/coercion.html index 08046063..8b792070 100644 --- a/ring/coercion.html +++ b/ring/coercion.html @@ -455,13 +455,13 @@
  • Set a Coercion implementation to route data under :coercion
  • Mount request & response coercion middleware to the routes (can be done for all routes as the middleware are only mounted to routes which have the parameters &/ responses defined):
  • If the request coercion succeeds, the coerced parameters are injected into request under :parameters.

    -

    If either request or response coercion fails, an descriptive error is thrown. To turn the exceptions into http responses, one can also mount the reitit.ring.coercion/gen-wrap-coerce-exceptions middleware

    +

    If either request or response coercion fails, an descriptive error is thrown. To turn the exceptions into http responses, one can also mount the reitit.ring.coercion/coerce-exceptions-middleware middleware

    Example with Schema

    (require '[reitit.ring :as ring])
     (require '[reitit.ring.coercion :as coercion])
    @@ -477,9 +477,9 @@
                             :handler (fn [{{{:keys [x y]} :body} :parameters}]
                                        {:status 200
                                         :body {:total (+ x y)}})}}]]
    -      {:data {:middleware [coercion/gen-wrap-coerce-exceptions
    -                           coercion/gen-wrap-coerce-parameters
    -                           coercion/gen-wrap-coerce-response]
    +      {:data {:middleware [coercion/coerce-exceptions-middleware
    +                           coercion/coerce-request-middleware
    +                           coercion/coerce-response-middleware]
                   :coercion schema/coercion}})))
     

    Valid request:

    @@ -517,9 +517,9 @@ :handler (fn [{{{:keys [x y]} :body} :parameters}] {:status 200 :body {:total (+ x y)}})}}]] - {:data {:middleware [coercion/gen-wrap-coerce-exceptions - coercion/gen-wrap-coerce-parameters - coercion/gen-wrap-coerce-response] + {:data {:middleware [coercion/coerce-exceptions-middleware + coercion/coerce-request-middleware + coercion/coerce-response-middleware] :coercion spec/coercion}})))

    Valid request:

    @@ -570,9 +570,9 @@ :handler (fn [{{{:keys [x y]} :body} :parameters}] {:status 200 :body {:total (+ x y)}})}}]] - {:data {:middleware [coercion/gen-wrap-coerce-exceptions - coercion/gen-wrap-coerce-parameters - coercion/gen-wrap-coerce-response] + {:data {:middleware [coercion/coerce-exceptions-middleware + coercion/coerce-request-middleware + coercion/coerce-response-middleware] :coercion spec/coercion}})))

    Valid request:

    @@ -607,9 +607,9 @@
    (defprotocol Coercion
       "Pluggable coercion protocol"
       (get-name [this] "Keyword name for the coercion")
    -  (compile [this model name] "Compiles a coercion model")
       (get-apidocs [this model data] "???")
    -  (make-open [this model] "Returns a new map model which doesn't fail on extra keys")
    +  (compile-model [this model name] "Compiles a coercion model")
    +  (open-model [this model] "Returns a new map model which doesn't fail on extra keys")
       (encode-error [this error] "Converts error in to a serializable format")
       (request-coercer [this type model] "Returns a `value format => value` request coercion function")
       (response-coercer [this model] "Returns a `value format => value` response coercion function"))
    @@ -657,7 +657,7 @@
         
     
    diff --git a/ring/compiling_middleware.html b/ring/compiling_middleware.html
    index 36e17c2b..5012e74b 100644
    --- a/ring/compiling_middleware.html
    +++ b/ring/compiling_middleware.html
    @@ -483,7 +483,7 @@
     
     
    (require '[reitit.ring.middleware :as middleware])
     
    -(def gen-wrap-coerce-response
    +(def coerce-response-middleware
       "Middleware for pluggable response coercion.
       Expects a :coercion of type `reitit.coercion.protocol/Coercion`
       and :responses from route data, otherwise does not mount."
    @@ -543,7 +543,7 @@
         
     
    diff --git a/ring/data_driven_middleware.html b/ring/data_driven_middleware.html
    index 7bc1a083..c49e2192 100644
    --- a/ring/data_driven_middleware.html
    +++ b/ring/data_driven_middleware.html
    @@ -576,7 +576,7 @@
         
     
    diff --git a/ring/dynamic_extensions.html b/ring/dynamic_extensions.html
    index e1385c36..59dcd8cc 100644
    --- a/ring/dynamic_extensions.html
    +++ b/ring/dynamic_extensions.html
    @@ -517,7 +517,7 @@
         
     
    diff --git a/ring/index.html b/ring/index.html
    index f0eb043c..f632d487 100644
    --- a/ring/index.html
    +++ b/ring/index.html
    @@ -489,7 +489,7 @@
         
     
    diff --git a/ring/ring.html b/ring/ring.html
    index ea78342c..0b3e1247 100644
    --- a/ring/ring.html
    +++ b/ring/ring.html
    @@ -579,7 +579,7 @@
         
     
    diff --git a/search_index.json b/search_index.json
    index 0f59f917..ca576d87 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","#reitit","#{:id}}","&","'())","'[reitit.cor","'[reitit.r","(","(:api","(app","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(schema","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":data",":get",":get,",":handler",":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","channel","class","clojure(script)","clojure.spec)","clojurian","coercion","compilation,","conflict","conj","core","data","dependeci","direct","discussions,","driven","dynam","exampl","extend","extens","fast","first","follow","functions,","handler","handler}]]])))","id","id)","id))","id)))","id]","id]]))","id}","id},","introduct","librari","match?","method","method.","middlewar","middleware,","modular","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","schema","separately:","simpl","slack.","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.","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",":data",":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",":data",":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",":data",":displac",":handler",":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",":data",":expand",":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","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","via","{rout","{})"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::users]]))",":a",":linear",":lookup",":mix",":prefix",":router",":singl",";","[\"/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","pluggabl","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:data","#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",":data",":get,",":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.","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","{:data","{: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","allowed.","and/or","anyth","api","app","arbitrari","arg","authorizationmiddlewar","authrorizationmiddlewar","avail","befor","bit","bubblin'","call","chain","chain,","class","coerc","compil","complain","compos","conj","correctly:","creat","data","debug","default,","defin","depend","descript","details.","differently:","doc","document","driven","e.g.","easi","enabl","end","entri","etc.","expans","extern","first","fix","follow","form","function","function,","function.","functions,","futur","gener","given","great","handl","handler","handler}}]])))","hard.","hook","id))))","id]","idea","ident","injectuserintorequestmiddlewar","inventories,","issu","it'","key","keys,","keyword","keywords)","level","make","malipul","manipul","map","merg","method","middlewar","middleware)","middleware,","middleware.","middleware])","name","new","normal","opaqu","partial","penalty.","performance.","processing,","produc","propos","protocol.","provid","purpose:","qualifi","raw","record","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","still,","style)","support","thing","things.\"","thu","togeth","top","turn","type","typo","under:","undrstand","unwrap","us","valid","valu","vector","welcom","wrap","wrap2","wrap3","wrap})","wrap}))","yield","zero","{:get","{:middlewar","{:name","{:request","{:statu"],"ring/coercion.html":["\"(not","\"(spec","\"/api/ping\"","\"2\"","\"2\"}","\"2\"}})","\"???\")","\"clojure.core/int?\"","\"compil","\"convert","\"everyth","\"int\",","\"int\"}","\"keyword","\"pluggabl","\"return","#{:i","&","&/","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.schema","'[reitit.ring.coercion.spec","'[schema.cor","'[spec","(+","(app","(can","(clojure.spec.alpha/key","(compil","(def","(defprotocol","(encod","(fn","(get","(integer?","(make","(or","(request","(requir","(respons","(ring/r","(ring/rout","(s/constrain","(s/def","(s/key","(st/spec","1,","200","2}})","3}}","400,",":$spec37747/y]),","::coercion/request","::i","::request","::request}","::respons","::response}}","::total","::x","::y]","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":error",":form,",":handler",":header",":in",":key",":keys/req",":map,",":paramet",":parameters.",":parameters}]",":path.",":post",":pred",":problem",":query,",":reitit.coercion",":reitit.ring.coercion/request",":req",":respons",":schema",":spec",":type",":uri",":val",":valu",":via",":x},",":x}})\"",":y",";","=>","[\"/api\"","[\"/ping\"","[:$spec37747/x","[:$spec37747/y]","[::request","[::total]))","[::x","[:reitit.coercion","[:request","[:y]","[:y]}]}}","[coercion/gen","[thi","[this]","[x","[{:path","[{{{:key","\\\"2\\\"))\"}}}","`valu","adopt","api.","apidoc","app","both","clojure.spec","code","coerc","coercer","coercion","coercion\")","coercion.","coercion/gen","coercion])","compojur","configur","conforming,","currently,","custom","data","data,","data]","defin","defined):","descript","details.","differ","doesn't","done","else\")","engine,","error","error]","exampl","except","extra","fail","fails,","follow","following:","format","format\")","function\")","function\"))","handler","http","implement","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","invalid","key","keys\")","map","map,","method","middlewar","model","model\")","model]","modules:","mount","name","name]","need","new","on","open","option","options,","origin","param","paramet","parameters:","params]","plug","pluggabl","plumat","po","pos?}}}","protocol\"","protocol,","protocol.","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.schema/schemacoercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","request","request:","respons","response]","responses,","ring","ring,","ring])","rout","runtim","s/int","s/int,","s/int}}","s])","schema","schema.","schema/coercion}})))","schema])","see","serializ","set","ship","sourc","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","test/x","test/y]),","thrown.","tools.cor","tools.core/spec","tools.core/spec.","transform","turn","type","un","under","understood","us","valid","value`","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:data","{:i","{:middlewar","{:paramet","{:post","{:request","{:schema","{:spec","{:statu","{:total","{:type","{:x"],"ring/compiling_middleware.html":["\"middlewar","\"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)",":data",":gen",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","?wrap.","[coercer","[coercion","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","below","better.","but,","closur","code,","coerc","coercer","coercion","coercion.","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","faster.","function","gen","handler","inform","instead","it?","itself","key","know","latter","less","link","local","lookup","match","method","middlewar","middleware.","middleware/interceptor","middleware])","mount","mount.\"","much","nil.","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","read","reason","reasoning:","record","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","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","(just","(matches,","(micro","(or","(per","(r/match","(r/router","(real","(requir","(static","(which","(wildcard",")benchmark","/api/command/add","1","1.9m","100","1000)","1000):","1000]","16","2,5","24x","256","3.2","300","312m","4","50+","500x","530","6",":",":a",":auth/login]",":auth/recovery]",":mix",":request",":workspace/page]]))",";;","=>",">","[\"/auth/recovery/token/:token\"","[\"/workspace/:project/:page\"","[[\"/auth/login\"","[_","`lein","abstract","accur","actual","adopt","again,","against.","algorithm,","algorithms,","also,","alway","anoth","api","ataraxi","average,","back","base","baselin","bench","benchmark.","best/worst","better","better,","between","bide","bidi,","both","box","busi","but,","cach","cache:","case,","case.","cc])","choos","ci","clojure(script),","code","command","compar","compil","compojur","comput","conflict","consist","constant,","contain","core","core):","cores:","cqr","created,","creation","data.","definit","definitions.","degrade.","depends.","differ","disabl","do","don't","e.g.","effect","enabl","ensur","environment.","error.","errors.","even","exampl","execut","fail","fallback","fast","fast),","fast.","faster","fastest","featur","few","first","flatten","follow","found","found,","function","gb","ghz","go.","great","handler.","have","help","here,","here.","hopefulli","http","i7","idea","identifier:","immut","infinit","inlin","instead","intel","interceptor)","interest","intern","invok","it'","jvm","kb","know.","known","l2","l3","languages,","larg","lib","librari","libs.","life","life)","long","look","lookup","lot","lot.","lupapiste.","macbook","macbookpro11,3","magnitud","magnitude.","manag","mani","map","maps)","match","matter","matter?","mb","mean","measur","measure?","memory:","method","mid","middlewar","middleware,","mind.","mix","model","more","mount","move","much","multimethod","multipl","mutabl","name:","need","new","non","not.","notabl","note:","nothing.","ns","number","ok","on","opensensor","ops/sec","optim","order","order.","origin","out","over","parameters.","partial","path","path)","path.","pedest","pedestal).","pedestal.","perf","perf.","perform","performance,","performance.","performance:","pleas","port","possibl","precompute/compil","prefix","pro","process","processor","processors:","proof","protocol","pull","queri","r])","rational","re","readme:","real","realistic.","realli","record","regress","reitit","repl","repl`","repo","request","resolut","rest","rest(ish)","result","rewritten","ring","rout","route(s)","router","router,","router.","routers.","routes)","routes,","run","same","sampl","scenario","scientif","second","separ","serv","setup:","shine","simpl","site","size","slower","slowest","small","so,","someth","speed:","stabl","start","static","static,","still","style","swagger","tabl","take","taken","test","tests,","thank","thing","three","time","time,","tip","too).","total","tree","tree,","tree.","trees,","tri","trust","two","unmount","us","view","want","welcome.","well,","wildcard","work","yield","~200","~300","µs","µs."],"faq.html":["ask","faq","frequent","question"]},"length":20},"tokenStore":{"root":{"1":{"0":{"0":{"0":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"docs":{}},"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"8":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"9":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"docs":{}},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.012517385257301807}}}},"2":{"0":{"0":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}},",":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}},"docs":{}},"4":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"5":{"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"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.0029940119760479044}},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},",":{"5":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"1":{"2":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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.0029940119760479044}},"]":{"docs":{},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}},".":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"4":{"0":{"0":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}},"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285}}}},"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.0035211267605633804}}},"5":{"0":{"0":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"docs":{},"%":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"+":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"3":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"\"":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.0136986301369863}}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"}":{"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}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"2":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"}":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}},"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.005479452054794521}}}}}}}}}},"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.007142857142857143}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.005479452054794521}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}},"\"":{"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.0017605633802816902}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},"\"":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}},"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.014285714285714285}}}}}}}}}}}}},"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.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}}}},"(":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}},"?":{"docs":{},"?":{"docs":{},"?":{"docs":{},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"?":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}},"#":{"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.0136986301369863},"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.0027397260273972603}}}}}},":":{"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.0027397260273972603}}}}}}}}}}}}}}}},".":{"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.0027397260273972603},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}},"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.0029940119760479044}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}}}}},"'":{"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":{},"d":{"docs":{},"a":{"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.006097560975609756}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"/":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0017605633802816902}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},".":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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.007142857142857143}}}}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}},"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":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.018292682926829267}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"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.006097560975609756}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}}}},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},".":{"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}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}},"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.0029940119760479044}}},"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.007142857142857143}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012195121951219513}}}}}},"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}}},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"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.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.042105263157894736}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012195121951219513}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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.0029940119760479044}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01524390243902439}}}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.024657534246575342},"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.0035211267605633804}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.008928571428571428},"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.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.0017605633802816902}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.016689847009735744},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.0017605633802816902}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}},"/":{"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}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.006954102920723227}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}},"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.007142857142857143}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},"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.007142857142857143}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"*":{"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.006097560975609756}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}}}}}}},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"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.007142857142857143}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"k":{"docs":{},"e":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"f":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"v":{"docs":{},"i":{"docs":{},"a":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"?":{"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.007142857142857143}}}}}}},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01524390243902439}}}}},"+":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}},"j":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.01643835616438356}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0027397260273972603}}}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.00821917808219178}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"]":{"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.0029940119760479044}}}}},"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.008928571428571428},"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":{},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.016689847009735744},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"p":{"docs":{},"i":{"docs":{},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},")":{"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.0017605633802816902}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03571428571428571},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.025034770514603615}}},"y":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.010526315789473684},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.018292682926829267}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012195121951219513}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},")":{"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.0029940119760479044}}}}},"]":{"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.0029940119760479044}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}}},"x":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"a":{"docs":{},"p":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.0029940119760479044}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"}":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"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.010526315789473684},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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}}}}},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}},"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.0029940119760479044}}}}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.006097560975609756}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}}}}}},"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}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"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.008928571428571428},"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.008928571428571428}}}},",":{"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.005479452054794521},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}},"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.010526315789473684}}}}}},"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.010526315789473684}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.009735744089012517},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}}}}},"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.010526315789473684}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}}}}}},"i":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.006954102920723227}},"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.006097560975609756}}}}}}}},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"3":{"7":{"7":{"4":{"7":{"docs":{},"/":{"docs":{},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}},"i":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}},"x":{"docs":{},"}":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}},"}":{"docs":{},")":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.016689847009735744}}}},";":{"docs":{"./":{"ref":"./","tf":0.11232876712328767},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.026785714285714284},"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.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.048678720445062586}},";":{"docs":{"performance.html":{"ref":"performance.html","tf":0.028169014084507043}}}},">":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.018292682926829267},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"[":{"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.0029940119760479044}},"]":{"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.0027397260273972603},"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.007142857142857143}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}}}},":":{"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.008928571428571428}}}}}}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"]":{"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.0027397260273972603},"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.008928571428571428},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"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.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.008928571428571428},"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.007142857142857143}}}}},"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.0017605633802816902}}}}}}}}}}}}},"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.0027397260273972603}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},":":{"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.0035211267605633804}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}}}}}},"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.0136986301369863}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"i":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}},":":{"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.0029940119760479044}}}}}}}},"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.007142857142857143}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"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}}}}}}}},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"3":{"7":{"7":{"4":{"7":{"docs":{},"/":{"docs":{},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"}":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}},"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.026785714285714284},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}},"s":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.03571428571428571}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"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":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}}}}}}},"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}},"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}}}}}}}}}}}}}}}}}}}}}}}}}}},"#":{"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}},"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.007142857142857143}},"d":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"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.003048780487804878}}}}}}}}}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044}},"u":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},"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.008928571428571428},"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.0029940119760479044}}}}}}}}}},"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":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.010526315789473684}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"s":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}},"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.014285714285714285}}}}},"t":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.010526315789473684},"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.007142857142857143},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"c":{"docs":{"basics/":{"ref":"basics/","tf":10.071428571428571}}}}},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"d":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"i":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"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}},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"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},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.0017605633802816902}}}},"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.007142857142857143}}}}},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"t":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"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.008982035928143712}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"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}}}}},"o":{"docs":{},"o":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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}}}}}}}}}}}}}}}}}}}}},"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}}}}}}}}}},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}},"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.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01808066759388039},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/coercion.html":{"ref":"ring/coercion.html","tf":5.026425591098748},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03048780487804878}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.024390243902439025}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"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.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015243902439025},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"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}}}}}}}},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"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.010526315789473684}}}},".":{"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.021052631578947},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"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},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"s":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"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}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}},"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}}}}}}},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.03571428571428571},"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.005988023952095809}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},".":{"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.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"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},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.042105263157894736},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.3602794411177643},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"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.0029940119760479044}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.014970059880239521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"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},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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.010526315789473684},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"c":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"s":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.336327345309381}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.007142857142857},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"n":{"docs":{},"e":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}},"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.0027397260273972603},"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.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.003048780487804878}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.014285714285714},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"r":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"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.0029940119760479044}}}}},"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.009146341463414634}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.006954102920723227}},"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.0035211267605633804}}}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"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.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},"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.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},")":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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}}}}},"l":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"q":{"docs":{"faq.html":{"ref":"faq.html","tf":10}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"x":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"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.0017605633802816902}}}}}},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"a":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"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.05263157894736842},"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.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}},".":{"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.005988023952095809}}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}},"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.0029940119760479044}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.0035211267605633804}}}}}},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},")":{"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.0029940119760479044}}}}}}}}},"s":{"docs":{},".":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},",":{"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.007142857142857143}},")":{"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.007142857142857143}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.0029940119760479044}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"l":{"docs":{},"p":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"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.007142857142857143}}},"p":{"docs":{},"e":{"docs":{},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"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":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"7":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005479452054794521}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},"\"":{"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.0029940119760479044}},"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}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"/":{"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":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"t":{"docs":{"./":{"ref":"./","tf":10.002739726027396}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"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.0035211267605633804}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"?":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"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.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.009146341463414634}},"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":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368}}}}},":":{"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.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"?":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"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.0017605633802816902}}}}}},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"l":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"i":{"docs":{},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"y":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.003048780487804878}}}},"f":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.0029940119760479044}}}}},"s":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"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.0017605633802816902}},"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.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},".":{"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.003048780487804878}}}}},"n":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"r":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"u":{"docs":{},"p":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"?":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}},"s":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"n":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"a":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"k":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"l":{"docs":{},"i":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"c":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"p":{"docs":{},"r":{"docs":{},"o":{"1":{"1":{"docs":{},",":{"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01524390243902439},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"a":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"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.0029940119760479044}},"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.0035211267605633804}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"e":{"docs":{},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.393213572854291},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.024390243902439},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"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.0029940119760479044}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"]":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}},"/":{"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.006097560975609756}}}}}}}}}}}}}}}}}}}}}},"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}}}},"n":{"docs":{},"d":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},"e":{"docs":{},"s":{"docs":{},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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}}}},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0017605633802816902}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"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.009146341463414634},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05357142857142857},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"!":{"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}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.024657534246575342},"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.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.003048780487804878}}}}},"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.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"w":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"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},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}}}}},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.042105263157894736},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}},"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.03571428571428571},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.010526315789473684},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},",":{"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.007042253521126761}}},"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.009146341463414634}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"a":{"docs":{},"q":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"e":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.01056338028169014}},"\"":{"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}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}},"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.0035211267605633804}},"*":{"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.006097560975609756}}}}}}}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.012517385257301807}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"s":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.00821917808219178},"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.008928571428571428},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.01056338028169014}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.006097560975609756}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/coercion.html":{"ref":"ring/coercion.html","tf":5.00278164116829},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.0017605633802816902}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"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.0017605633802816902}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"s":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"o":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.003048780487804878}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}},"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.007042253521126761}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"r":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.01232394366197183}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":10.008802816901408}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"l":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"o":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"s":{"docs":{},"?":{"docs":{},"}":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"r":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0017605633802816902}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},".":{"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.008928571428571428}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.010526315789473684}}}}}}}}},"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.010526315789473684}}}}}}}}}}}},"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.007142857142857143}}}}}},".":{"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.0029940119760479044}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}}}}}}}}}}}}},"/":{"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.027439024390243903},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01524390243902439}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"v":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.021052631578947368},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"(":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.0029940119760479044}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.011126564673157162},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.04878048780487805}},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}},"s":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009146341463414634}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.010526315789473684},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"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.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"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.0017605633802816902}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.003048780487804878}}}}},"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.0029940119760479044}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"`":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.0625},"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.12631578947368421},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.020958083832335328},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.006954102920723227},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03048780487804878},"performance.html":{"ref":"performance.html","tf":0.0528169014084507}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0410958904109589},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.080357142857142},"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.042105263157895},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.0029940119760479044}}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},":":{"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.02142857142857143}}},"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.0017605633802816902}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},".":{"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.0029940119760479044}}},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},":":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},")":{"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0029940119760479044}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"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.00528169014084507}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}},"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.008928571428571428},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},",":{"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.007142857142857143}}}},"u":{"docs":{},"p":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"r":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"v":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.010526315789473684}}}},"t":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"z":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"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.0035211267605633804}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"\"":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0136986301369863}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}},":":{"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.0029940119760479044}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},".":{"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},"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.0017605633802816902}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.008928571428571428}}},"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},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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.008802816901408451}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0035211267605633804}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"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":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"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.0029940119760479044}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.007042253521126761}}}},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"n":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.003048780487804878}}}}}},"/":{"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.0029940119760479044}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0017605633802816902}}}}},"e":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.007042253521126761}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0035211267605633804}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}}},":":{"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.0029940119760479044}}}}}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0017605633802816902}},"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.010526315789473684}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}},"e":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"s":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}},"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.0029940119760479044}}},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.00528169014084507}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"p":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.02464788732394366}},"/":{"docs":{},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"\"":{"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/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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.0029940119760479044}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01808066759388039},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.018292682926829267}},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}}},"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},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"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.01056338028169014}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.0029940119760479044}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}}}}},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}},"d":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"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.00821917808219178},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.008344923504867872}}}}}}}},"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.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03571428571428571},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.012517385257301807}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}},"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.007142857142857143}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.011126564673157162}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.016689847009735744}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}},"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.010526315789473684}}}}}}},"=":{"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.05263157894736842},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"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.0029940119760479044}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},"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.0029940119760479044}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"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}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"h":{"docs":{},"z":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"v":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},".":{"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.010526315789473684},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006097560975609756}}},"e":{"docs":{},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.010526315789473684},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005563282336578581}}}},":":{"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.005988023952095809}},"e":{"docs":{},"`":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}},"/":{"docs":{},"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}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}}}}}},":":{"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.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.014970059880239521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}},"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.008982035928143712}},"s":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},",":{"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.0029940119760479044}}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}},"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.003048780487804878}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"%":{"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.003048780487804878}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}}}}},".":{"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.006097560975609756}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0027816411682892906}}}}}},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"?":{"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.003048780487804878}}}}}}}},"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.0029940119760479044}}}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}}}}}}}}},"y":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"\\":{"docs":{},"\"":{"2":{"docs":{},"\\":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},"\"":{"docs":{},"}":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0013908205841446453}}}}}}}}}}},"docs":{}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.004172461752433936}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.003048780487804878}}}},")":{"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.0017605633802816902}}}}}}}}}}}},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"~":{"2":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"docs":{}},"µ":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"length":2346},"corpusTokens":["\"(not","\"(spec","\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/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.3.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"2\"","\"2\"}","\"2\"}})","\"???\")","\"clojure.core/int?\"","\"compil","\"convert","\"everyth","\"forbidden\"}","\"int\",","\"int\"}","\"keyword","\"middlewar","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"return","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:data","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#reitit","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:i","#{: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.schema","'[reitit.ring.coercion.spec","'[reitit.ring.middlewar","'[reitit.spec","'[reitit.spec])","'[schema.cor","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(a","(and","(app","(ataraxy,","(blank?","(can","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/key","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compil","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(duct/integrant/macchiato","(effect","(encod","(figwheel","(fn","(fnil","(for","(get","(handler","(if","(integer?","(just","(let","(make","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(of","(onli","(option","(optional)","(or","(per","(r/match","(r/partial","(r/rout","(r/router","(real","(records,","(reitit/match","(reitit/routes))","(request","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/constrain","(s/def","(s/explain","(s/key","(s/valid?","(schema","(seq","(set!","(set/subset?","(some","(st/spec","(start","(static","(stest/instru","(str","(updat","(via","(which","(wildcard",")benchmark","...","...])","/:user","/:version/statu","/api/command/add","/api/user/:id:","/bulk/:bulk","/public/*path","1","1,","1.8","1.9m","100","1000)","1000):","1000]","16","1]","2","2,5","200","200,","24x","256","2]]}","2})","2},","2}})","3","3.2","300","312m","3]]","3}}","4","400,","403,","404}","404})))","50%","50+","500x","530","6",":",":$spec37747/y]),","::acc","::admin]","::admin}]","::coerc","::coercion/request","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]","::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",":data",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":error",":expand",":form,",":gen",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":in",":into",":key",":keys/req",":let",":linear",":lookup",":map,",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":pred",":prefix",":prepend,",":problem",":provides.",":put,",":put.",":queri",":query,",":reitit.coercion",":reitit.ring.coercion/request",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":singl",":spec",":type",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":val",":valu",":via",":workspace/page]]))",":wrap",":wrap.",":x},",":x}})\"",":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]","[:$spec37747/x","[:$spec37747/y]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::request","[::roles]","[::total]))","[::x","[:api","[:command","[:reitit.coercion","[:request","[:rout","[:routes]","[:user/p","[:y]","[:y]}]}}","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[[wrap3","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion","[coercion/gen","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[org.clojure/clojur","[org.clojure/clojurescript","[path","[request]","[requir","[respons","[thi","[this]","[this])","[wrap","[wrap2","[x","[{:key","[{:path","[{{{:key","\\\"2\\\"))\"}}}","^:replac","^^^^^^","_]","`lein","`reitit.coercion.protocol/coercion`","`reitit/router)","`valu","abstract","acc","access","accumul","accur","action","actual","ad","adapt","add","admin}}]]","admin}}]]]))","adopt","advanc","again,","against","against.","algorithm,","algorithms,","allow","allowed.","alpha17\"]","also,","alway","and/or","anonym","anoth","anyth","api","api.","apidoc","app","app:","appli","applic","approaches,","arbitrari","arg","args.","argument","arguments.","arguments:","ariti","ask","async","at:","ataraxi","attacht","author","authorizationmiddlewar","authrorizationmiddlewar","avail","average,","back","base","baselin","basic","befor","behavior","behind","below","bench","benchmark.","best","best/worst","better","better,","better.","between","bi","bide","bidi,","bit","bootstrapping:","both","box","bubblin'","build","built","busi","but,","cach","cache:","call","callback.","called.","case","case,","case.","catch","cc])","chain","chain,","channel","cheng","child","choos","ci","class","client","clojur","clojure(script)","clojure(script),","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","clojure.spec)","clojurescript,","clojurian","closur","co","code","code,","coerc","coercer","coercion","coercion\")","coercion.","coercion/gen","coercion])","colect","command","compar","compil","compilation,","compiler,","compilerexcept","complain","compojur","components.","compos","comput","configur","conflicit","conflict","conflicts!)","conflicts.","conflicts:","conform","conforming,","conj","consist","constant,","contain","core","core):","cores:","correctly:","cqr","creat","created,","created.","creation","currently,","custom","data","data,","data.","data:","data]","db","db)","debug","decid","default","default,","defin","defined):","defined,","defined.","definit","definitions.","degrade.","demonstr","depend","dependeci","depends.","descript","details.","detect","dev","develop","differ","differently:","direct","disabl","discussions,","do","doc","document","doesn't","don't","done","done:","driven","dynam","e.g.","easi","easier","effec","effect","element","else\")","enabl","end","enforc","engine,","ensur","entri","environment.","error","error.","error]","errors.","especi","etc.","etc.)","even","ex","exact","exampl","except","exceptioninfo","execut","exist","expand","expans","expect","explicit","expound","expound/printer)","expound])","extend","extens","extern","extra","extract","fail","fails,","fallback","fals","false)","faq","fast","fast),","fast,","fast.","faster","faster.","fastest","featur","few","first","fix","flatten","flattened:","fn","follow","following:","form","format","format\")","found","found,","found.","frequent","function","function\")","function\"))","function,","function.","functions,","futur","gb","gen","gener","get","ghz","given","go.","go:","good,","great","guard","handl","handler","handler.","handler:","handler]","handler]))","handler])))","handler]]]]","handlers,","handlers.","handler}])))","handler}]]])))","handler}}]])))","handler}}]]])))","hard.","hash","have","heart","help","here,","here.","higher","higher)","hoc","hook","hooks.","hopefulli","http","i7","id","id\"]","id)","id))","id)))","id))))","id/ord","id/orders\"]","id]","id]]))","idea","ident","identifier:","identity]","identity]}","identity}}]]","identity}}]]))","id}","id},","ignored.","immut","implement","implementation.","in:","infinit","info","inform","information:","initi","inject","injectuserintorequestmiddlewar","inlin","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","intel","interceptor)","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","invalid","inventories,","invok","issu","it'","it?","itself","jvm","kb","key","key,","keys\")","keys,","keys:","keyword","keywords)","kind","know","know.","known","l2","l3","languages,","larg","latter","leaf","less","level","lib","librari","library.","libs.","life","life)","link","list","local","log","long","look","lookup","lookup.","lot","lot.","lupapiste.","macbook","macbookpro11,3","magnitud","magnitude.","make","malipul","manag","mani","manipul","manual","map","map,","map.","maps)","match","match)","match,","match.","match?","matched,","matches,","matter","matter?","mb","mean","measur","measure?","memory:","merg","merge.","message.","messages:","meta","method","method.","methods.","mid","middlewar","middleware)","middleware,","middleware.","middleware/interceptor","middleware:","middleware])","mind.","miss","mix","mode?","mode?]","model","model\")","model]","modular","modules:","more","more.","mount","mount.\"","move","much","multimethod","multipl","mutabl","name","name!","name.","name:","name]","names:","namespac","need","nest","new","nil","nil,","nil.","nil:","nil]","node.j","non","normal","not.","notabl","note","note:","nothing.","nothing.\"","ns","number","ok","on","opaqu","open","opensensor","ops/sec","opt","optim","optin","option","option,","optionally,","options,","options.","opts)]","opts]}","order","order\"","order.","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters.","parameters:","params]","params]))","part","partial","partialmatch","partialmatch,","pass","path","path)","path.","path])","pedest","pedestal).","pedestal.","penalty.","perf","perf.","perform","performance,","performance.","performance:","pleas","plug","pluggabl","plumat","po","port","pos?}}}","possibl","pre","precompute/compil","predicate:","prefix","pretti","principl","print","println","pro","problems.","process","processing,","processing.","processor","processors:","produc","programmatically:","project:","proof","propos","protocol","protocol\"","protocol)","protocol,","protocol.","protocol:","provid","public","pull","purpose:","qualifi","queri","question","r])","raise))))))","raise)))))))}))","raise]","rational","raw","rc1\"]","re","read","readi","readme:","real","realistic.","realli","reason","reasoning:","record","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.schema/schemacoercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relev","repl","repl`","repo","request","request)","request)))","request)))))","request.","request:","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response.","response]","responses)","responses,","rest","rest(ish)","result","results,","results:","resut","retriev","return","returned,","returned:","revers","rewritten","ring","ring,","ring.","ring])","role","roles)))","roles:","roles]}})))","root","rout","route(s)","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/int","s/int,","s/int}}","s/key","s])","same","sampl","satisfi","scenario","scene","schema","schema.","schema/coercion}})))","schema])","scientif","second","see","select","separ","separately:","sequenti","sequential)","serializ","serv","set","set,","set])","setup:","sever","shape","shine","ship","show","side","simpl","singl","site","size","slack.","slow,","slower","slowest","small","snapshot\"]","so,","someth","sound","sourc","sources.","spec","spec/coercion}})))","spec:","spec])","special","specs.","speed:","st])","stabl","start","static","static,","statu","step","stest])","still","still,","sting","str)})","string","stuctur","style","style)","submap","submap.","succeeds,","suitabl","super","support","swagger","swagger:","syntax","system.","tabl","table.","take","taken","target","test","test/x","test/y]),","tests,","thank","them.","thing","things.\"","third","three","throw","thrown.","thrown:","thu","time","time,","time.","tip","to,","to:","todo","togeth","too).","too.","tools\"","tools.cor","tools.core/spec","tools.core/spec.","tools])])","top","total","toward","transform","tree","tree,","tree.","tree:","trees,","trees.","tri","true","trust","turn","two","type","typo","un","under","under:","understood","undrstand","unmount","unreachanle.","until","unwrap","us","used)","user","user\"","user]","user]}}]","usually,","val:","valid","valu","value`","values.","vector","vector.","version:","via","view","want","want,","way","welcom","welcome.","well,","whole","wildcard","with?","work","worlds.","wrap","wrap.","wrap2","wrap3","wrap})","wrap}))","written","x","y)}})}}]]","y]}","yield","zero","{200","{::role","{:bodi","{:conflict","{:data","{:get","{:handler","{:i","{:id","{:interceptor","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:spec","{:statu","{:total","{:type","{:uri","{:x","{method","{rout","{}","{})","~200","~300","µs","µ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 data\nBi-directional routing\nRing-router with data-driven middleware\nPluggable coercion (schema & clojure.spec)\nExtendable\nModular\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[metosin/reitit-schema \"0.1.0-SNAPSHOT\"] ; schema coercion\n\nFor discussions, there is a #reitit channel in Clojurians slack.\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;        :data {: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;        :data {: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;        :data {: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;               :data {: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;        :data {: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;        :data {: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 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;        :data {: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;        :data {: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;               :data {: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;        :data {: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;        :data {:name :user/ping}\n;        :result nil\n;        :params {}\n;        :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n;        :data {: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;        :data {: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 route 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:data\nInitial route data (default {})\n\n\n:expand\nFunction of arg opts => data to expand route arg to route 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\nPluggable 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{:data {: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) :data ::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 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      {:data {: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 & args => request => response. It's easy to undrstand and enables great performance. Still, in the end - the middleware-chain is just a opaque function, 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 runtime middleware function.\nMiddleware can be defined as first-class data entries\n\nMiddleware as data\nAll values in the :middleware vector in the route data are coerced into reitit.ring.middleware/Middleware Records with using the reitit.ring.middleware/IntoMiddleware Protocol. By default, functions, maps and Middleware records are allowed.\nRecords can have arbitrary keys, but the following 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 and composed into a middleware function chain, 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/coercion.html":{"url":"ring/coercion.html","title":"Pluggable Coercion","keywords":"","body":"Pluggable Coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api.\nReitit ships with the following coercion modules:\n\nreitit.ring.coercion.schema/SchemaCoercion for plumatic schema.\nreitit.ring.coercion.spec/SpecCoercion for both clojure.spec and data-specs.\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 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\nSet a Coercion implementation to route data under :coercion\nMount request & response coercion middleware to the routes (can be done for all routes as the middleware are only mounted to routes which have the parameters &/ responses defined):\nreitit.ring.coercion/gen-wrap-coerce-parameters\nreitit.ring.coercion/gen-wrap-coerce-response\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. To turn the exceptions into http responses, one can also mount the reitit.ring.coercion/gen-wrap-coerce-exceptions middleware\nExample with Schema\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.schema :as schema])\n(require '[schema.core :as s])\n\n(def app\n  (ring/ring-handler\n    (ring/router\n      [\"/api\"\n       [\"/ping\" {:post {:parameters {:body {:x s/Int, :y s/Int}}\n                        :responses {200 {:schema {:total (s/constrained s/Int pos?}}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/gen-wrap-coerce-exceptions\n                           coercion/gen-wrap-coerce-parameters\n                           coercion/gen-wrap-coerce-response]\n              :coercion schema/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type :reitit.ring.coercion/request-coercion\n;         :coercion :schema\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :schema {:x \"Int\", :y \"Int\"}\n;         :errors {:y \"(not (integer? \\\"2\\\"))\"}}}\n\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\" {:post {:parameters {:body {:x int?, :y int?}}\n                        :responses {200 {:schema {:total pos-int?}}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/gen-wrap-coerce-exceptions\n                           coercion/gen-wrap-coerce-parameters\n                           coercion/gen-wrap-coerce-response]\n              :coercion spec/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type ::coercion/request-coercion\n;         :coercion :spec\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :spec \"(spec-tools.core/spec {:spec (clojure.spec.alpha/keys :req-un [:$spec37747/x :$spec37747/y]), :type :map, :keys #{:y :x}, :keys/req #{:y :x}})\"\n;         :problems [{:path [:y]\n;                     :pred \"clojure.core/int?\"\n;                     :val \"2\"\n;                     :via [:$spec37747/y]\n;                     :in [:y]}]}}\n\nExample with clojure.spec\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\" {:post {:parameters {:body ::request}\n                        :responses {200 {:schema ::response}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/gen-wrap-coerce-exceptions\n                           coercion/gen-wrap-coerce-parameters\n                           coercion/gen-wrap-coerce-response]\n              :coercion spec/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type ::coercion/request-coercion\n;         :coercion :spec\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :spec \"(spec-tools.core/spec {:spec (clojure.spec.alpha/keys :req-un [:reitit.coercion-test/x :reitit.coercion-test/y]), :type :map, :keys #{:y :x}, :keys/req #{:y :x}})\"\n;         :problems [{:path [:y]\n;                     :pred \"clojure.core/int?\"\n;                     :val \"2\"\n;                     :via [::request ::y]\n;                     :in [:y]}]}}\n\nCustom coercion\nBoth Schema and Spec Coercion can be configured via options, see the source code for details.\nTo plug in new validation engine, see the\nreitit.ring.coercion.protocol/Coercion protocol.\n(defprotocol Coercion\n  \"Pluggable coercion protocol\"\n  (get-name [this] \"Keyword name for the coercion\")\n  (compile [this model name] \"Compiles a coercion model\")\n  (get-apidocs [this model data] \"???\")\n  (make-open [this model] \"Returns a new map model which doesn't fail on extra keys\")\n  (encode-error [this error] \"Converts error in to a serializable format\")\n  (request-coercer [this type model] \"Returns a `value format => value` request coercion function\")\n  (response-coercer [this model] \"Returns a `value format => value` response coercion function\"))\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.\nBut, 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-data 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.\nNormal Middleware\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 data, 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 :data :responses)\n           coercion (-> match :data :coercion)\n           opts (-> match :data :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 :data :responses)\n           coercion (-> match :data :coercion)\n           opts (-> match :data :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 Middleware\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  \"Middleware for pluggable response coercion.\n  Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n  and :responses from route data, otherwise does not mount.\"\n  (middleware/create\n    {:name ::coerce-response\n     :gen-wrap (fn [{:keys [coercion responses 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 be really fast. Originally the routing was adopted from Pedestal (which is known to be fast), but has been partially rewritten performance in mind. Hopefully some optimizations can be back-ported to Pedestal.\nRationale\n\nMultiple routing algorithms, choose based on the 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 (or Maps)\nRecords over Maps\nAlways be measuring\nDon't trust the (micro-)benchmarks\n\nDoes routing performance matter?\nWell, it depends. With small route trees, it might not. But, with large (real-life) route trees, difference between the fastest and the slowest tested libs can be two or three orders of magnitude. For busy sites it actually matters if you routing request takes 100 ns or 100 µs. A lot.\nTests\nAll perf tests are found in the repo and have been run with the following setup:\n;;\n;; start repl with `lein perf repl`\n;; perf measured with the following setup:\n;;\n;; Model Name:            MacBook Pro\n;; Model Identifier:      MacBookPro11,3\n;; Processor Name:        Intel Core i7\n;; Processor Speed:       2,5 GHz\n;; Number of Processors:  1\n;; Total Number of Cores: 4\n;; L2 Cache (per Core):   256 KB\n;; L3 Cache:              6 MB\n;; Memory:                16 GB\n;;\nNOTE: Tests are not scientific proof and may contain errors. You should always run the perf tests with your own (real-life) routing tables to get more accurate results for your use case. Also, if you have idea how to test things better, please let us know.\nSimple Example\nThe routing sample taken from bide README:\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 (per 1000) : 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 (per 1000): 530 µs -> 1.9M ops/sec\n(cc/quick-bench\n  (dotimes [_ 1000]\n    (r/match-by-path routes \"/workspace/1/1\")))\n\nBased on the 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, the example is too simple for any real benchmark. Also, some of the libraries always match on the :request-method too and by doing so, do more work than just match by path. Compojure does most work also by invoking the handler.\nSo, we need to test something more realistic.\nRESTful apis\nTo get better view on the real life routing performance, there is test of a mid-size rest(ish) http api with 50+ routes, having a lot of path parameters. The route definitions are pulled off from the OpenSensors swagger definitions.\nThanks to the prefix-tree algorithm, reitit-ring and Pedestal are fastest here.\n\nCQRS apis\nAnother real-life test scenario is a CQRS-style route tree, where all the paths are static, e.g. /api/command/add-order. The route definitions are pulled out from Lupapiste. The test consists of ~300 static routes (just the commands here, there would be ~200 queries too).\nAgain, both reitit-ring and Pedestal shine here, thanks to the fast lookup-routers. On average, they are two orders of magnitude faster and on best/worst case, three orders of magnitude faster than the other tested libs. Ataraxy failed this test on Method code too large error.\n\nNOTE: If there would be even one wildcard route in the route-tree, Pedestal would fallback from lookup-router to the prefix-tree router, yielding constant, but order of magnitude slower perf. Reitit instead fallbacks to :mixed-router, still serving the static routes with lookup-router, just the wildcard route(s) with prefix-tree. So, the performance would not notably degrade.\nWhy measure?\nThe routing perf needs to be measured to get an internal baseline to optimize against. We also want to ensure that new features don't regress the performance. Perf tests should be run in a stable CI environment. Help welcome.\nLooking out of the box\nIt might be interesting to compare reitit with the routers in other languages, like the routers in Go.\nPerformance tips\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.\nUnmounted middleware (or interceptor) is infinitely faster than a mounted one effectively doing nothing.\n\n\n\n"},"faq.html":{"url":"faq.html","title":"FAQ","keywords":"","body":"Frequently Asked Questions\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","#reitit","#{:id}}","&","'())","'[reitit.cor","'[reitit.r","(","(:api","(app","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(schema","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":data",":get",":get,",":handler",":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","channel","class","clojure(script)","clojure.spec)","clojurian","coercion","compilation,","conflict","conj","core","data","dependeci","direct","discussions,","driven","dynam","exampl","extend","extens","fast","first","follow","functions,","handler","handler}]]])))","id","id)","id))","id)))","id]","id]]))","id}","id},","introduct","librari","match?","method","method.","middlewar","middleware,","modular","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","schema","separately:","simpl","slack.","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.","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",":data",":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",":data",":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",":data",":displac",":handler",":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",":data",":expand",":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","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","via","{rout","{})"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::users]]))",":a",":linear",":lookup",":mix",":prefix",":router",":singl",";","[\"/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","pluggabl","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:data","#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",":data",":get,",":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.","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","{:data","{: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","allowed.","and/or","anyth","api","app","arbitrari","arg","authorizationmiddlewar","authrorizationmiddlewar","avail","befor","bit","bubblin'","call","chain","chain,","class","coerc","compil","complain","compos","conj","correctly:","creat","data","debug","default,","defin","depend","descript","details.","differently:","doc","document","driven","e.g.","easi","enabl","end","entri","etc.","expans","extern","first","fix","follow","form","function","function,","function.","functions,","futur","gener","given","great","handl","handler","handler}}]])))","hard.","hook","id))))","id]","idea","ident","injectuserintorequestmiddlewar","inventories,","issu","it'","key","keys,","keyword","keywords)","level","make","malipul","manipul","map","merg","method","middlewar","middleware)","middleware,","middleware.","middleware])","name","new","normal","opaqu","partial","penalty.","performance.","processing,","produc","propos","protocol.","provid","purpose:","qualifi","raw","record","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","still,","style)","support","thing","things.\"","thu","togeth","top","turn","type","typo","under:","undrstand","unwrap","us","valid","valu","vector","welcom","wrap","wrap2","wrap3","wrap})","wrap}))","yield","zero","{:get","{:middlewar","{:name","{:request","{:statu"],"ring/coercion.html":["\"(not","\"(spec","\"/api/ping\"","\"2\"","\"2\"}","\"2\"}})","\"???\")","\"clojure.core/int?\"","\"compil","\"convert","\"everyth","\"int\",","\"int\"}","\"keyword","\"pluggabl","\"return","#{:i","&","&/","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.schema","'[reitit.ring.coercion.spec","'[schema.cor","'[spec","(+","(app","(can","(clojure.spec.alpha/key","(compil","(def","(defprotocol","(encod","(fn","(get","(integer?","(open","(or","(request","(requir","(respons","(ring/r","(ring/rout","(s/constrain","(s/def","(s/key","(st/spec","1,","200","2}})","3}}","400,",":$spec37747/y]),","::coercion/request","::i","::request","::request}","::respons","::response}}","::total","::x","::y]","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":error",":form,",":handler",":header",":in",":key",":keys/req",":map,",":paramet",":parameters.",":parameters}]",":path.",":post",":pred",":problem",":query,",":reitit.coercion",":reitit.ring.coercion/request",":req",":respons",":schema",":spec",":type",":uri",":val",":valu",":via",":x},",":x}})\"",":y",";","=>","[\"/api\"","[\"/ping\"","[:$spec37747/x","[:$spec37747/y]","[::request","[::total]))","[::x","[:reitit.coercion","[:request","[:y]","[:y]}]}}","[coercion/coerc","[thi","[this]","[x","[{:path","[{{{:key","\\\"2\\\"))\"}}}","`valu","adopt","api.","apidoc","app","both","clojure.spec","code","coerc","coercer","coercion","coercion\")","coercion.","coercion/coerc","coercion])","compojur","configur","conforming,","currently,","custom","data","data,","data]","defin","defined):","descript","details.","differ","doesn't","done","else\")","engine,","error","error]","exampl","except","extra","fail","fails,","follow","following:","format","format\")","function\")","function\"))","handler","http","implement","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","invalid","key","keys\")","map","map,","method","middlewar","middleware]","model","model\")","model]","modules:","mount","name","name]","need","new","on","option","options,","origin","param","paramet","parameters:","params]","plug","pluggabl","plumat","po","pos?}}}","protocol\"","protocol,","protocol.","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.schema/schemacoercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/coerc","request","request:","respons","responses,","ring","ring,","ring])","rout","runtim","s/int","s/int,","s/int}}","s])","schema","schema.","schema/coercion}})))","schema])","see","serializ","set","ship","sourc","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","test/x","test/y]),","thrown.","tools.cor","tools.core/spec","tools.core/spec.","transform","turn","type","un","under","understood","us","valid","value`","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:data","{:i","{:middlewar","{:paramet","{:post","{:request","{:schema","{:spec","{:statu","{:total","{:type","{:x"],"ring/compiling_middleware.html":["\"middlewar","\"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)",":data",":gen",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","?wrap.","[coercer","[coercion","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","below","better.","but,","closur","code,","coerc","coercer","coercion","coercion.","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","faster.","function","handler","inform","instead","it?","itself","key","know","latter","less","link","local","lookup","match","method","middlewar","middleware.","middleware/interceptor","middleware])","mount","mount.\"","much","nil.","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","read","reason","reasoning:","record","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","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","(just","(matches,","(micro","(or","(per","(r/match","(r/router","(real","(requir","(static","(which","(wildcard",")benchmark","/api/command/add","1","1.9m","100","1000)","1000):","1000]","16","2,5","24x","256","3.2","300","312m","4","50+","500x","530","6",":",":a",":auth/login]",":auth/recovery]",":mix",":request",":workspace/page]]))",";;","=>",">","[\"/auth/recovery/token/:token\"","[\"/workspace/:project/:page\"","[[\"/auth/login\"","[_","`lein","abstract","accur","actual","adopt","again,","against.","algorithm,","algorithms,","also,","alway","anoth","api","ataraxi","average,","back","base","baselin","bench","benchmark.","best/worst","better","better,","between","bide","bidi,","both","box","busi","but,","cach","cache:","case,","case.","cc])","choos","ci","clojure(script),","code","command","compar","compil","compojur","comput","conflict","consist","constant,","contain","core","core):","cores:","cqr","created,","creation","data.","definit","definitions.","degrade.","depends.","differ","disabl","do","don't","e.g.","effect","enabl","ensur","environment.","error.","errors.","even","exampl","execut","fail","fallback","fast","fast),","fast.","faster","fastest","featur","few","first","flatten","follow","found","found,","function","gb","ghz","go.","great","handler.","have","help","here,","here.","hopefulli","http","i7","idea","identifier:","immut","infinit","inlin","instead","intel","interceptor)","interest","intern","invok","it'","jvm","kb","know.","known","l2","l3","languages,","larg","lib","librari","libs.","life","life)","long","look","lookup","lot","lot.","lupapiste.","macbook","macbookpro11,3","magnitud","magnitude.","manag","mani","map","maps)","match","matter","matter?","mb","mean","measur","measure?","memory:","method","mid","middlewar","middleware,","mind.","mix","model","more","mount","move","much","multimethod","multipl","mutabl","name:","need","new","non","not.","notabl","note:","nothing.","ns","number","ok","on","opensensor","ops/sec","optim","order","order.","origin","out","over","parameters.","partial","path","path)","path.","pedest","pedestal).","pedestal.","perf","perf.","perform","performance,","performance.","performance:","pleas","port","possibl","precompute/compil","prefix","pro","process","processor","processors:","proof","protocol","pull","queri","r])","rational","re","readme:","real","realistic.","realli","record","regress","reitit","repl","repl`","repo","request","resolut","rest","rest(ish)","result","rewritten","ring","rout","route(s)","router","router,","router.","routers.","routes)","routes,","run","same","sampl","scenario","scientif","second","separ","serv","setup:","shine","simpl","site","size","slower","slowest","small","so,","someth","speed:","stabl","start","static","static,","still","style","swagger","tabl","take","taken","test","tests,","thank","thing","three","time","time,","tip","too).","total","tree","tree,","tree.","trees,","tri","trust","two","unmount","us","view","want","welcome.","well,","wildcard","work","yield","~200","~300","µs","µs."],"faq.html":["ask","faq","frequent","question"]},"length":20},"tokenStore":{"root":{"1":{"0":{"0":{"0":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"docs":{}},"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"8":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"9":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"docs":{}},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.012711864406779662}}}},"2":{"0":{"0":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}},",":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}},"docs":{}},"4":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"5":{"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"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.0029940119760479044}},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},",":{"5":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"1":{"2":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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.0029940119760479044}},"]":{"docs":{},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}},".":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"4":{"0":{"0":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}},"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285}}}},"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.0035211267605633804}}},"5":{"0":{"0":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"docs":{},"%":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"+":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"3":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"6":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"\"":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.0136986301369863}}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"}":{"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}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"2":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"}":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}},"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.005479452054794521}}}}}}}}}},"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.007142857142857143}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.005479452054794521}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}},"\"":{"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.0017605633802816902}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},"\"":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}},"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.014285714285714285}}}}}}}}}}}}},"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.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}}}},"(":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}},"?":{"docs":{},"?":{"docs":{},"?":{"docs":{},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"?":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}},"#":{"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.0136986301369863},"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.0027397260273972603}}}}}},":":{"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.0027397260273972603}}}}}}}}}}}}}}}},".":{"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.0027397260273972603},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}},"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.0029940119760479044}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}}}}},"'":{"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":{},"d":{"docs":{},"a":{"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.0061162079510703364}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"/":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0017605633802816902}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},".":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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.007142857142857143}}}}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}},"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":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01834862385321101}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"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.0061162079510703364}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}}}},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},".":{"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}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}},"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.0029940119760479044}}},"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.007142857142857143}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012232415902140673}}}}}},"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}}},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"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.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.042105263157894736}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012232415902140673}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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.0029940119760479044}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01529051987767584}}}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.024657534246575342},"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.0035211267605633804}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.008928571428571428},"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.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.0017605633802816902}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01694915254237288},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.0017605633802816902}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}},"/":{"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}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}},"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.007142857142857143}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},"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.007142857142857143}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"*":{"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.0061162079510703364}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}}}}}}},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"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.007142857142857143}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}},"e":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"f":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"v":{"docs":{},"i":{"docs":{},"a":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"?":{"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.007142857142857143}}}}}}},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01529051987767584}}}}},"+":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}},"j":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.01643835616438356}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0027397260273972603}}}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.00821917808219178}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"]":{"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.0029940119760479044}}}}},"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.008928571428571428},"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":{},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01694915254237288},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"p":{"docs":{},"i":{"docs":{},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"}":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},")":{"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.0017605633802816902}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03571428571428571},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.025423728813559324}}},"y":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.010526315789473684},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01834862385321101}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012232415902140673}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},")":{"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.0029940119760479044}}}}},"]":{"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.0029940119760479044}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}}},"x":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"a":{"docs":{},"p":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.0029940119760479044}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"}":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"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.010526315789473684},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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}}}}},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}},"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.0029940119760479044}}}}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.0061162079510703364}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}}}}}},"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}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"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.008928571428571428},"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.008928571428571428}}}},",":{"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.005479452054794521},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}},"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.010526315789473684}}}}}},"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.010526315789473684}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.009887005649717515},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}}}}},"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.010526315789473684}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}}}}}},"i":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367}},"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.0061162079510703364}}}}}}}},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"3":{"7":{"7":{"4":{"7":{"docs":{},"/":{"docs":{},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}},"i":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}},"x":{"docs":{},"}":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}},"}":{"docs":{},")":{"docs":{},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01694915254237288}}}},";":{"docs":{"./":{"ref":"./","tf":0.11232876712328767},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.026785714285714284},"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.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.04943502824858757}},";":{"docs":{"performance.html":{"ref":"performance.html","tf":0.028169014084507043}}}},">":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01834862385321101},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"[":{"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.0029940119760479044}},"]":{"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.0027397260273972603},"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.007142857142857143}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}}}},":":{"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.008928571428571428}}}}}}}}}}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"]":{"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.0027397260273972603},"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.008928571428571428},"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.0017605633802816902}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"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.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.008928571428571428},"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.007142857142857143}}}}},"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.0017605633802816902}}}}}}}}}}}}},"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.0027397260273972603}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},":":{"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.0035211267605633804}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}}}}}},"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.0136986301369863}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"i":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}},":":{"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.0029940119760479044}}}}}}}},"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.007142857142857143}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"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}}}}}}}},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}},"$":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"3":{"7":{"7":{"4":{"7":{"docs":{},"/":{"docs":{},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"y":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"}":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}},"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.026785714285714284},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}},"s":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.03571428571428571}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"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":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}}}}}}},"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}},"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}}}}}}}}}}}}}}}}}}}}}}}}}}},"#":{"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}},"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.007142857142857143}},"d":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"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.0030581039755351682}}}}}}}}}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044}},"u":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},"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.008928571428571428},"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.0029940119760479044}}}}}}}}}},"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":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.010526315789473684}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"s":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}},"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.014285714285714285}}}}},"t":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.010526315789473684},"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.007142857142857143},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"c":{"docs":{"basics/":{"ref":"basics/","tf":10.071428571428571}}}}},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"d":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"i":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"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}},"/":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"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},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.0017605633802816902}}}},"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.007142857142857143}}}}},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"t":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"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.008982035928143712}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"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}}}}},"o":{"docs":{},"o":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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}}}}}}}}}}}}}}}}}}}}},"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}}}}}}}}}},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}},"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.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/coercion.html":{"ref":"ring/coercion.html","tf":5.02683615819209},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03058103975535168}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}}}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.024464831804281346}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"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.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015290519877676},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}},"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}}}}}}}},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"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.010526315789473684}}}},".":{"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.021052631578947},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"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},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"s":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"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}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}},"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}}}}}}},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.03571428571428571},"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.005988023952095809}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},".":{"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.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"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},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.042105263157894736},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.3602794411177643},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"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.0029940119760479044}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.014970059880239521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"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},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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.010526315789473684},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"c":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"s":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.336327345309381}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.007142857142857},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"n":{"docs":{},"e":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}},"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.0027397260273972603},"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.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.0030581039755351682}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.014285714285714},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"r":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"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.0029940119760479044}}}}},"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.009174311926605505}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367}},"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.0035211267605633804}}}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"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.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014285714285714285},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},"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.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},")":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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}}}}},"l":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"q":{"docs":{"faq.html":{"ref":"faq.html","tf":10}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"x":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"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.0017605633802816902}}}}}},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"a":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"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.05263157894736842},"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.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}},".":{"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.005988023952095809}}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}},"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.0029940119760479044}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.0035211267605633804}}}}}},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},")":{"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.0029940119760479044}}}}}}}}},"s":{"docs":{},".":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},",":{"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.007142857142857143}},")":{"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.007142857142857143}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"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.0029940119760479044}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"l":{"docs":{},"p":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"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.007142857142857143}}},"p":{"docs":{},"e":{"docs":{},"f":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"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":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"7":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"]":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005479452054794521}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},"\"":{"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.0029940119760479044}},"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}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"/":{"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":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"t":{"docs":{"./":{"ref":"./","tf":10.002739726027396}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"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.0035211267605633804}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"?":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}},"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.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.009174311926605505}},"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":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368}}}}},":":{"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.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"?":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"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.0017605633802816902}}}}}},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"l":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{},"i":{"docs":{},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"y":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0030581039755351682}}}},"f":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.0029940119760479044}}}}},"s":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"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.0017605633802816902}},"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.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},".":{"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.0030581039755351682}}}}},"n":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"r":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"u":{"docs":{},"p":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03058103975535168},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"?":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}},"s":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"n":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"a":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"k":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"l":{"docs":{},"i":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"c":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"p":{"docs":{},"r":{"docs":{},"o":{"1":{"1":{"docs":{},",":{"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01529051987767584},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"a":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"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.0029940119760479044}},"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.0035211267605633804}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"e":{"docs":{},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.393213572854291},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01694915254237288},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.027522935779817},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"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.0029940119760479044}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}},"/":{"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.0061162079510703364}}}}}}}}}}}}}}}}}}}}}},"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}}}},"n":{"docs":{},"d":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}},"e":{"docs":{},"s":{"docs":{},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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}}}},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0017605633802816902}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},"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.009174311926605505},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05357142857142857},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"!":{"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}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.024657534246575342},"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.010526315789473684},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0030581039755351682}}}}},"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.008928571428571428},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"w":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"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},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}}}}},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.042105263157894736},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}},"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.03571428571428571},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.021052631578947368},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.010526315789473684},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},",":{"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.007042253521126761}}},"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.009174311926605505}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"a":{"docs":{},"q":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.01056338028169014}},"\"":{"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}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}},"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.0035211267605633804}},"*":{"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.0061162079510703364}}}}}}}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"s":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.00821917808219178},"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.008928571428571428},"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.010526315789473684},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.01056338028169014}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0061162079510703364}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/coercion.html":{"ref":"ring/coercion.html","tf":5.002824858757062},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}},"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.0017605633802816902}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"\"":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"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.0017605633802816902}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"s":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"o":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0030581039755351682}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}}}},"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.0017605633802816902}}}}}}}}}}}}}}}}}},"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.007042253521126761}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"r":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.01232394366197183}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":10.008802816901408}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"l":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"o":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"s":{"docs":{},"?":{"docs":{},"}":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"r":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0017605633802816902}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},",":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},".":{"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.008928571428571428}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.010526315789473684}}}}}}}}},"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.010526315789473684}}}}}}}}}}}},"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.007142857142857143}}}}}},".":{"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.0029940119760479044}}}}}}}}}}}}}}},"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.0029940119760479044}}}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}}}}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}}}}}}}}}}}}}},"/":{"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.014285714285714285},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.027522935779816515},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01529051987767584}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"v":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.021052631578947368},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"(":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"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.0029940119760479044}}}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.015536723163841809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.04892966360856269}},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"s":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.009174311926605505}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.010526315789473684},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"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.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"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.0017605633802816902}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0030581039755351682}}}}},"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.0029940119760479044}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"`":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.01643835616438356},"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.0625},"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.12631578947368421},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.020958083832335328},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.007062146892655367},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03058103975535168},"performance.html":{"ref":"performance.html","tf":0.0528169014084507}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0410958904109589},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.080357142857142},"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.042105263157895},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},")":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.0029940119760479044}}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},":":{"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.02142857142857143}}},"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.0017605633802816902}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}},".":{"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.0029940119760479044}}},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}},":":{"docs":{"./":{"ref":"./","tf":0.010958904109589041},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},")":{"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}}}}}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0029940119760479044}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"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.00528169014084507}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}}}}}}},"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.008928571428571428},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},",":{"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.007142857142857143}}}},"u":{"docs":{},"p":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"r":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"v":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.010526315789473684}}}},"t":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"z":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603}}}}}},"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.0035211267605633804}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"\"":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0136986301369863}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}},":":{"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.0029940119760479044}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},".":{"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},"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.0017605633802816902}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.008928571428571428}}},"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},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"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.008802816901408451}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0035211267605633804}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"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":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}},"]":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"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.0029940119760479044}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.007042253521126761}}}},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"n":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0030581039755351682}}}}}},"/":{"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.0029940119760479044}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.0017605633802816902}}}}},"e":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.007042253521126761}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"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.0035211267605633804}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0029940119760479044}}},":":{"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.0029940119760479044}}}}}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"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.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.0017605633802816902}},"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.010526315789473684}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}},"e":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"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.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"s":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}},"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.0029940119760479044}}},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"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.00528169014084507}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"p":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.02464788732394366}},"/":{"docs":{},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},",":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143}},"\"":{"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/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}},"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/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"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.0029940119760479044}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01529051987767584}},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}}},"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},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}},"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.01056338028169014}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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.0029940119760479044}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0027397260273972603},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}}}}},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}},"d":{"docs":{"./":{"ref":"./","tf":0.00821917808219178},"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.00821917808219178},"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.007142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0136986301369863},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017857142857142856},"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.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00847457627118644}}}}}}}},"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.005479452054794521},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03571428571428571},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.012711864406779662}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}},"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.007142857142857143}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.011299435028248588}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.01694915254237288}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005479452054794521},"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":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.010526315789473684}}}},"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.010526315789473684}}}}}}},"=":{"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.05263157894736842},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"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.0029940119760479044}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008928571428571428}}}},"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.0029940119760479044}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"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}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02142857142857143}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"h":{"docs":{},"z":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"v":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},".":{"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.010526315789473684},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.007142857142857143},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0061162079510703364}}},"e":{"docs":{},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"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.010526315789473684},"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.0029940119760479044},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.005649717514124294}}}},":":{"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.005988023952095809}},"e":{"docs":{},"`":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}},"s":{"docs":{},".":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}},"/":{"docs":{},"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}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}}}}}},":":{"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.010526315789473684},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.014970059880239521},"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}},"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.008982035928143712}},"s":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},",":{"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.0029940119760479044}}},"\"":{"docs":{},")":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}},"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.0030581039755351682}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"%":{"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.0030581039755351682}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}}}}},".":{"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.0061162079510703364}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.002824858757062147}}}}}},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"?":{"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.0030581039755351682}}}}}}}},"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.0029940119760479044}}}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"faq.html":{"ref":"faq.html","tf":0.3333333333333333}}}}}}}}}},"y":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"\\":{"docs":{},"\"":{"2":{"docs":{},"\\":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},"\"":{"docs":{},"}":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.0014124293785310734}}}}}}}}}}},"docs":{}}},"x":{"docs":{"ring/coercion.html":{"ref":"ring/coercion.html","tf":0.00423728813559322}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030581039755351682}}}},")":{"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.0017605633802816902}}}}}}}}}}}},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"~":{"2":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}},"docs":{}},"docs":{}},"µ":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"length":2344},"corpusTokens":["\"(not","\"(spec","\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/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.3.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"2\"","\"2\"}","\"2\"}})","\"???\")","\"clojure.core/int?\"","\"compil","\"convert","\"everyth","\"forbidden\"}","\"int\",","\"int\"}","\"keyword","\"middlewar","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"return","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:data","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#reitit","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:i","#{: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.schema","'[reitit.ring.coercion.spec","'[reitit.ring.middlewar","'[reitit.spec","'[reitit.spec])","'[schema.cor","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(a","(and","(app","(ataraxy,","(blank?","(can","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/key","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compil","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(duct/integrant/macchiato","(effect","(encod","(figwheel","(fn","(fnil","(for","(get","(handler","(if","(integer?","(just","(let","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(of","(onli","(open","(option","(optional)","(or","(per","(r/match","(r/partial","(r/rout","(r/router","(real","(records,","(reitit/match","(reitit/routes))","(request","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/constrain","(s/def","(s/explain","(s/key","(s/valid?","(schema","(seq","(set!","(set/subset?","(some","(st/spec","(start","(static","(stest/instru","(str","(updat","(via","(which","(wildcard",")benchmark","...","...])","/:user","/:version/statu","/api/command/add","/api/user/:id:","/bulk/:bulk","/public/*path","1","1,","1.8","1.9m","100","1000)","1000):","1000]","16","1]","2","2,5","200","200,","24x","256","2]]}","2})","2},","2}})","3","3.2","300","312m","3]]","3}}","4","400,","403,","404}","404})))","50%","50+","500x","530","6",":",":$spec37747/y]),","::acc","::admin]","::admin}]","::coerc","::coercion/request","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]","::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",":data",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":error",":expand",":form,",":gen",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":in",":into",":key",":keys/req",":let",":linear",":lookup",":map,",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":pred",":prefix",":prepend,",":problem",":provides.",":put,",":put.",":queri",":query,",":reitit.coercion",":reitit.ring.coercion/request",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":singl",":spec",":type",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":val",":valu",":via",":workspace/page]]))",":wrap",":wrap.",":x},",":x}})\"",":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]","[:$spec37747/x","[:$spec37747/y]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::request","[::roles]","[::total]))","[::x","[:api","[:command","[:reitit.coercion","[:request","[:rout","[:routes]","[:user/p","[:y]","[:y]}]}}","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[[wrap3","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion","[coercion/coerc","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[org.clojure/clojur","[org.clojure/clojurescript","[path","[request]","[requir","[respons","[thi","[this]","[this])","[wrap","[wrap2","[x","[{:key","[{:path","[{{{:key","\\\"2\\\"))\"}}}","^:replac","^^^^^^","_]","`lein","`reitit.coercion.protocol/coercion`","`reitit/router)","`valu","abstract","acc","access","accumul","accur","action","actual","ad","adapt","add","admin}}]]","admin}}]]]))","adopt","advanc","again,","against","against.","algorithm,","algorithms,","allow","allowed.","alpha17\"]","also,","alway","and/or","anonym","anoth","anyth","api","api.","apidoc","app","app:","appli","applic","approaches,","arbitrari","arg","args.","argument","arguments.","arguments:","ariti","ask","async","at:","ataraxi","attacht","author","authorizationmiddlewar","authrorizationmiddlewar","avail","average,","back","base","baselin","basic","befor","behavior","behind","below","bench","benchmark.","best","best/worst","better","better,","better.","between","bi","bide","bidi,","bit","bootstrapping:","both","box","bubblin'","build","built","busi","but,","cach","cache:","call","callback.","called.","case","case,","case.","catch","cc])","chain","chain,","channel","cheng","child","choos","ci","class","client","clojur","clojure(script)","clojure(script),","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","clojure.spec)","clojurescript,","clojurian","closur","co","code","code,","coerc","coercer","coercion","coercion\")","coercion.","coercion/coerc","coercion])","colect","command","compar","compil","compilation,","compiler,","compilerexcept","complain","compojur","components.","compos","comput","configur","conflicit","conflict","conflicts!)","conflicts.","conflicts:","conform","conforming,","conj","consist","constant,","contain","core","core):","cores:","correctly:","cqr","creat","created,","created.","creation","currently,","custom","data","data,","data.","data:","data]","db","db)","debug","decid","default","default,","defin","defined):","defined,","defined.","definit","definitions.","degrade.","demonstr","depend","dependeci","depends.","descript","details.","detect","dev","develop","differ","differently:","direct","disabl","discussions,","do","doc","document","doesn't","don't","done","done:","driven","dynam","e.g.","easi","easier","effec","effect","element","else\")","enabl","end","enforc","engine,","ensur","entri","environment.","error","error.","error]","errors.","especi","etc.","etc.)","even","ex","exact","exampl","except","exceptioninfo","execut","exist","expand","expans","expect","explicit","expound","expound/printer)","expound])","extend","extens","extern","extra","extract","fail","fails,","fallback","fals","false)","faq","fast","fast),","fast,","fast.","faster","faster.","fastest","featur","few","first","fix","flatten","flattened:","fn","follow","following:","form","format","format\")","found","found,","found.","frequent","function","function\")","function\"))","function,","function.","functions,","futur","gb","gener","get","ghz","given","go.","go:","good,","great","guard","handl","handler","handler.","handler:","handler]","handler]))","handler])))","handler]]]]","handlers,","handlers.","handler}])))","handler}]]])))","handler}}]])))","handler}}]]])))","hard.","hash","have","heart","help","here,","here.","higher","higher)","hoc","hook","hooks.","hopefulli","http","i7","id","id\"]","id)","id))","id)))","id))))","id/ord","id/orders\"]","id]","id]]))","idea","ident","identifier:","identity]","identity]}","identity}}]]","identity}}]]))","id}","id},","ignored.","immut","implement","implementation.","in:","infinit","info","inform","information:","initi","inject","injectuserintorequestmiddlewar","inlin","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","intel","interceptor)","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","invalid","inventories,","invok","issu","it'","it?","itself","jvm","kb","key","key,","keys\")","keys,","keys:","keyword","keywords)","kind","know","know.","known","l2","l3","languages,","larg","latter","leaf","less","level","lib","librari","library.","libs.","life","life)","link","list","local","log","long","look","lookup","lookup.","lot","lot.","lupapiste.","macbook","macbookpro11,3","magnitud","magnitude.","make","malipul","manag","mani","manipul","manual","map","map,","map.","maps)","match","match)","match,","match.","match?","matched,","matches,","matter","matter?","mb","mean","measur","measure?","memory:","merg","merge.","message.","messages:","meta","method","method.","methods.","mid","middlewar","middleware)","middleware,","middleware.","middleware/interceptor","middleware:","middleware]","middleware])","mind.","miss","mix","mode?","mode?]","model","model\")","model]","modular","modules:","more","more.","mount","mount.\"","move","much","multimethod","multipl","mutabl","name","name!","name.","name:","name]","names:","namespac","need","nest","new","nil","nil,","nil.","nil:","nil]","node.j","non","normal","not.","notabl","note","note:","nothing.","nothing.\"","ns","number","ok","on","opaqu","opensensor","ops/sec","opt","optim","optin","option","option,","optionally,","options,","options.","opts)]","opts]}","order","order\"","order.","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters.","parameters:","params]","params]))","part","partial","partialmatch","partialmatch,","pass","path","path)","path.","path])","pedest","pedestal).","pedestal.","penalty.","perf","perf.","perform","performance,","performance.","performance:","pleas","plug","pluggabl","plumat","po","port","pos?}}}","possibl","pre","precompute/compil","predicate:","prefix","pretti","principl","print","println","pro","problems.","process","processing,","processing.","processor","processors:","produc","programmatically:","project:","proof","propos","protocol","protocol\"","protocol)","protocol,","protocol.","protocol:","provid","public","pull","purpose:","qualifi","queri","question","r])","raise))))))","raise)))))))}))","raise]","rational","raw","rc1\"]","re","read","readi","readme:","real","realistic.","realli","reason","reasoning:","record","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.schema/schemacoercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/coerc","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relev","repl","repl`","repo","request","request)","request)))","request)))))","request.","request:","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response.","responses)","responses,","rest","rest(ish)","result","results,","results:","resut","retriev","return","returned,","returned:","revers","rewritten","ring","ring,","ring.","ring])","role","roles)))","roles:","roles]}})))","root","rout","route(s)","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/int","s/int,","s/int}}","s/key","s])","same","sampl","satisfi","scenario","scene","schema","schema.","schema/coercion}})))","schema])","scientif","second","see","select","separ","separately:","sequenti","sequential)","serializ","serv","set","set,","set])","setup:","sever","shape","shine","ship","show","side","simpl","singl","site","size","slack.","slow,","slower","slowest","small","snapshot\"]","so,","someth","sound","sourc","sources.","spec","spec/coercion}})))","spec:","spec])","special","specs.","speed:","st])","stabl","start","static","static,","statu","step","stest])","still","still,","sting","str)})","string","stuctur","style","style)","submap","submap.","succeeds,","suitabl","super","support","swagger","swagger:","syntax","system.","tabl","table.","take","taken","target","test","test/x","test/y]),","tests,","thank","them.","thing","things.\"","third","three","throw","thrown.","thrown:","thu","time","time,","time.","tip","to,","to:","todo","togeth","too).","too.","tools\"","tools.cor","tools.core/spec","tools.core/spec.","tools])])","top","total","toward","transform","tree","tree,","tree.","tree:","trees,","trees.","tri","true","trust","turn","two","type","typo","un","under","under:","understood","undrstand","unmount","unreachanle.","until","unwrap","us","used)","user","user\"","user]","user]}}]","usually,","val:","valid","valu","value`","values.","vector","vector.","version:","via","view","want","want,","way","welcom","welcome.","well,","whole","wildcard","with?","work","worlds.","wrap","wrap.","wrap2","wrap3","wrap})","wrap}))","written","x","y)}})}}]]","y]}","yield","zero","{200","{::role","{:bodi","{:conflict","{:data","{:get","{:handler","{:i","{:id","{:interceptor","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:spec","{:statu","{:total","{:type","{:uri","{:x","{method","{rout","{}","{})","~200","~300","µs","µ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 data\nBi-directional routing\nRing-router with data-driven middleware\nPluggable coercion (schema & clojure.spec)\nExtendable\nModular\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[metosin/reitit-schema \"0.1.0-SNAPSHOT\"] ; schema coercion\n\nFor discussions, there is a #reitit channel in Clojurians slack.\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;        :data {: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;        :data {: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;        :data {: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;               :data {: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;        :data {: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;        :data {: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 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;        :data {: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;        :data {: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;               :data {: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;        :data {: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;        :data {:name :user/ping}\n;        :result nil\n;        :params {}\n;        :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n;        :data {: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;        :data {: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 route 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:data\nInitial route data (default {})\n\n\n:expand\nFunction of arg opts => data to expand route arg to route 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\nPluggable 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{:data {: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) :data ::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 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      {:data {: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 & args => request => response. It's easy to undrstand and enables great performance. Still, in the end - the middleware-chain is just a opaque function, 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 runtime middleware function.\nMiddleware can be defined as first-class data entries\n\nMiddleware as data\nAll values in the :middleware vector in the route data are coerced into reitit.ring.middleware/Middleware Records with using the reitit.ring.middleware/IntoMiddleware Protocol. By default, functions, maps and Middleware records are allowed.\nRecords can have arbitrary keys, but the following 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 and composed into a middleware function chain, 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/coercion.html":{"url":"ring/coercion.html","title":"Pluggable Coercion","keywords":"","body":"Pluggable Coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api.\nReitit ships with the following coercion modules:\n\nreitit.ring.coercion.schema/SchemaCoercion for plumatic schema.\nreitit.ring.coercion.spec/SpecCoercion for both clojure.spec and data-specs.\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 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\nSet a Coercion implementation to route data under :coercion\nMount request & response coercion middleware to the routes (can be done for all routes as the middleware are only mounted to routes which have the parameters &/ responses defined):\nreitit.ring.coercion/coerce-request-middleware\nreitit.ring.coercion/coerce-response-middleware\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. To turn the exceptions into http responses, one can also mount the reitit.ring.coercion/coerce-exceptions-middleware middleware\nExample with Schema\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.schema :as schema])\n(require '[schema.core :as s])\n\n(def app\n  (ring/ring-handler\n    (ring/router\n      [\"/api\"\n       [\"/ping\" {:post {:parameters {:body {:x s/Int, :y s/Int}}\n                        :responses {200 {:schema {:total (s/constrained s/Int pos?}}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/coerce-exceptions-middleware\n                           coercion/coerce-request-middleware\n                           coercion/coerce-response-middleware]\n              :coercion schema/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type :reitit.ring.coercion/request-coercion\n;         :coercion :schema\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :schema {:x \"Int\", :y \"Int\"}\n;         :errors {:y \"(not (integer? \\\"2\\\"))\"}}}\n\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\" {:post {:parameters {:body {:x int?, :y int?}}\n                        :responses {200 {:schema {:total pos-int?}}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/coerce-exceptions-middleware\n                           coercion/coerce-request-middleware\n                           coercion/coerce-response-middleware]\n              :coercion spec/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type ::coercion/request-coercion\n;         :coercion :spec\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :spec \"(spec-tools.core/spec {:spec (clojure.spec.alpha/keys :req-un [:$spec37747/x :$spec37747/y]), :type :map, :keys #{:y :x}, :keys/req #{:y :x}})\"\n;         :problems [{:path [:y]\n;                     :pred \"clojure.core/int?\"\n;                     :val \"2\"\n;                     :via [:$spec37747/y]\n;                     :in [:y]}]}}\n\nExample with clojure.spec\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\" {:post {:parameters {:body ::request}\n                        :responses {200 {:schema ::response}}\n                        :handler (fn [{{{:keys [x y]} :body} :parameters}]\n                                   {:status 200\n                                    :body {:total (+ x y)}})}}]]\n      {:data {:middleware [coercion/coerce-exceptions-middleware\n                           coercion/coerce-request-middleware\n                           coercion/coerce-response-middleware]\n              :coercion spec/coercion}})))\n\nValid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y 2}})\n; {:status 200\n;  :body {:total 3}}\n\nInvalid request:\n(app\n  {:request-method :post\n   :uri \"/api/ping\"\n   :body-params {:x 1, :y \"2\"}})\n; {:status 400,\n;  :body {:type ::coercion/request-coercion\n;         :coercion :spec\n;         :in [:request :body-params]\n;         :value {:x 1, :y \"2\"}\n;         :spec \"(spec-tools.core/spec {:spec (clojure.spec.alpha/keys :req-un [:reitit.coercion-test/x :reitit.coercion-test/y]), :type :map, :keys #{:y :x}, :keys/req #{:y :x}})\"\n;         :problems [{:path [:y]\n;                     :pred \"clojure.core/int?\"\n;                     :val \"2\"\n;                     :via [::request ::y]\n;                     :in [:y]}]}}\n\nCustom coercion\nBoth Schema and Spec Coercion can be configured via options, see the source code for details.\nTo plug in new validation engine, see the\nreitit.ring.coercion.protocol/Coercion protocol.\n(defprotocol Coercion\n  \"Pluggable coercion protocol\"\n  (get-name [this] \"Keyword name for the coercion\")\n  (get-apidocs [this model data] \"???\")\n  (compile-model [this model name] \"Compiles a coercion model\")\n  (open-model [this model] \"Returns a new map model which doesn't fail on extra keys\")\n  (encode-error [this error] \"Converts error in to a serializable format\")\n  (request-coercer [this type model] \"Returns a `value format => value` request coercion function\")\n  (response-coercer [this model] \"Returns a `value format => value` response coercion function\"))\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.\nBut, 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-data 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.\nNormal Middleware\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 data, 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 :data :responses)\n           coercion (-> match :data :coercion)\n           opts (-> match :data :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 :data :responses)\n           coercion (-> match :data :coercion)\n           opts (-> match :data :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 Middleware\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 coerce-response-middleware\n  \"Middleware for pluggable response coercion.\n  Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n  and :responses from route data, otherwise does not mount.\"\n  (middleware/create\n    {:name ::coerce-response\n     :gen-wrap (fn [{:keys [coercion responses 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 be really fast. Originally the routing was adopted from Pedestal (which is known to be fast), but has been partially rewritten performance in mind. Hopefully some optimizations can be back-ported to Pedestal.\nRationale\n\nMultiple routing algorithms, choose based on the 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 (or Maps)\nRecords over Maps\nAlways be measuring\nDon't trust the (micro-)benchmarks\n\nDoes routing performance matter?\nWell, it depends. With small route trees, it might not. But, with large (real-life) route trees, difference between the fastest and the slowest tested libs can be two or three orders of magnitude. For busy sites it actually matters if you routing request takes 100 ns or 100 µs. A lot.\nTests\nAll perf tests are found in the repo and have been run with the following setup:\n;;\n;; start repl with `lein perf repl`\n;; perf measured with the following setup:\n;;\n;; Model Name:            MacBook Pro\n;; Model Identifier:      MacBookPro11,3\n;; Processor Name:        Intel Core i7\n;; Processor Speed:       2,5 GHz\n;; Number of Processors:  1\n;; Total Number of Cores: 4\n;; L2 Cache (per Core):   256 KB\n;; L3 Cache:              6 MB\n;; Memory:                16 GB\n;;\nNOTE: Tests are not scientific proof and may contain errors. You should always run the perf tests with your own (real-life) routing tables to get more accurate results for your use case. Also, if you have idea how to test things better, please let us know.\nSimple Example\nThe routing sample taken from bide README:\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 (per 1000) : 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 (per 1000): 530 µs -> 1.9M ops/sec\n(cc/quick-bench\n  (dotimes [_ 1000]\n    (r/match-by-path routes \"/workspace/1/1\")))\n\nBased on the 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, the example is too simple for any real benchmark. Also, some of the libraries always match on the :request-method too and by doing so, do more work than just match by path. Compojure does most work also by invoking the handler.\nSo, we need to test something more realistic.\nRESTful apis\nTo get better view on the real life routing performance, there is test of a mid-size rest(ish) http api with 50+ routes, having a lot of path parameters. The route definitions are pulled off from the OpenSensors swagger definitions.\nThanks to the prefix-tree algorithm, reitit-ring and Pedestal are fastest here.\n\nCQRS apis\nAnother real-life test scenario is a CQRS-style route tree, where all the paths are static, e.g. /api/command/add-order. The route definitions are pulled out from Lupapiste. The test consists of ~300 static routes (just the commands here, there would be ~200 queries too).\nAgain, both reitit-ring and Pedestal shine here, thanks to the fast lookup-routers. On average, they are two orders of magnitude faster and on best/worst case, three orders of magnitude faster than the other tested libs. Ataraxy failed this test on Method code too large error.\n\nNOTE: If there would be even one wildcard route in the route-tree, Pedestal would fallback from lookup-router to the prefix-tree router, yielding constant, but order of magnitude slower perf. Reitit instead fallbacks to :mixed-router, still serving the static routes with lookup-router, just the wildcard route(s) with prefix-tree. So, the performance would not notably degrade.\nWhy measure?\nThe routing perf needs to be measured to get an internal baseline to optimize against. We also want to ensure that new features don't regress the performance. Perf tests should be run in a stable CI environment. Help welcome.\nLooking out of the box\nIt might be interesting to compare reitit with the routers in other languages, like the routers in Go.\nPerformance tips\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.\nUnmounted middleware (or interceptor) is infinitely faster than a mounted one effectively doing nothing.\n\n\n\n"},"faq.html":{"url":"faq.html","title":"FAQ","keywords":"","body":"Frequently Asked Questions\n"}}}
    \ No newline at end of file