From 6582e6a5601499708982239fbb795a47ba4639cc Mon Sep 17 00:00:00 2001 From: Automatic build Date: Mon, 13 Nov 2017 05:57:11 +0000 Subject: [PATCH] Build book from commit a246bf4a9e98603c05859eea41bae92d3a3f0990 [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 +- images/lupapiste.png | Bin 0 -> 26044 bytes images/opensensors.png | Bin 0 -> 29958 bytes index.html | 3 +- performance.html | 65 +++++++++++++++++++++--------- ring/compiling_middleware.html | 2 +- ring/data_driven_middleware.html | 2 +- ring/dynamic_extensions.html | 2 +- ring/index.html | 2 +- ring/parameter_coercion.html | 2 +- ring/ring.html | 2 +- search_index.json | 2 +- 22 files changed, 67 insertions(+), 37 deletions(-) create mode 100644 images/lupapiste.png create mode 100644 images/opensensors.png diff --git a/advanced/configuring_routers.html b/advanced/configuring_routers.html index e42e351f..809b6324 100644 --- a/advanced/configuring_routers.html +++ b/advanced/configuring_routers.html @@ -512,7 +512,7 @@ diff --git a/advanced/different_routers.html b/advanced/different_routers.html index 9017128f..a238d674 100644 --- a/advanced/different_routers.html +++ b/advanced/different_routers.html @@ -511,7 +511,7 @@ diff --git a/advanced/index.html b/advanced/index.html index 93672f1e..00ff210a 100644 --- a/advanced/index.html +++ b/advanced/index.html @@ -474,7 +474,7 @@ diff --git a/advanced/route_validation.html b/advanced/route_validation.html index e21f6344..b28ec771 100644 --- a/advanced/route_validation.html +++ b/advanced/route_validation.html @@ -623,7 +623,7 @@ diff --git a/basics/index.html b/basics/index.html index e41cfcc4..003f5e19 100644 --- a/basics/index.html +++ b/basics/index.html @@ -477,7 +477,7 @@ diff --git a/basics/name_based_routing.html b/basics/name_based_routing.html index 5bb9a46d..07d7fc95 100644 --- a/basics/name_based_routing.html +++ b/basics/name_based_routing.html @@ -518,7 +518,7 @@ diff --git a/basics/path_based_routing.html b/basics/path_based_routing.html index e00fcbdc..fb6e1865 100644 --- a/basics/path_based_routing.html +++ b/basics/path_based_routing.html @@ -496,7 +496,7 @@ diff --git a/basics/route_conflicts.html b/basics/route_conflicts.html index bdc7165a..db36bc8c 100644 --- a/basics/route_conflicts.html +++ b/basics/route_conflicts.html @@ -513,7 +513,7 @@ diff --git a/basics/route_data.html b/basics/route_data.html index c9d3ba70..c110633e 100644 --- a/basics/route_data.html +++ b/basics/route_data.html @@ -547,7 +547,7 @@ diff --git a/basics/route_syntax.html b/basics/route_syntax.html index 9cc2acba..87341244 100644 --- a/basics/route_syntax.html +++ b/basics/route_syntax.html @@ -526,7 +526,7 @@ diff --git a/basics/router.html b/basics/router.html index 97df24bd..e6a596c9 100644 --- a/basics/router.html +++ b/basics/router.html @@ -506,7 +506,7 @@ diff --git a/images/lupapiste.png b/images/lupapiste.png new file mode 100644 index 0000000000000000000000000000000000000000..ff60e91d1297dfa29b0d83474b17202f6d3e7292 GIT binary patch literal 26044 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 B;A;Q? literal 0 HcmV?d00001 diff --git a/images/opensensors.png b/images/opensensors.png new file mode 100644 index 0000000000000000000000000000000000000000..d59d6dab965bb85c9b746ac394deeafd36b481de GIT binary patch literal 29958 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
V?Mx8zW~%5Mu{mf0;vIf~-E|@iljFaPYz36F$R6 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 z zCbU1`YAnQu$XV^<=o!(*GSjN@rEQJ3XKB(y)9Oo9dtaaPp4l4WuCSCbO=tIXHWd3f zL4BkBafKaq{8msrFV42u%3P!X{QkYR6Zdr7F%iUkn@a z8bY6@9gL5xC_nL~>hN^_k_#*rogPfwyjF8`oH8QfpOBf*;*#N#54)Q`wHeyGW{P-9 zhHW25bv9w zr1zRv6nHACq^f07e6;+M!HcT=Vp?&7naLxo{V5zSI%>}oxao(>PaibBF+?iL6o{J! zdFhCspcBEO8N>^N56=$^7u6QV7q?M!cSJ_^&c_z>8@|EwO?C#|80RAqbhs7>u||kq z--iWBRC;r0>y$w9`^{DU!M4a2a;2zBt4NkLwE_O2lienActwl=BY(+XrA$Tb3pji*Qb7FUO$gtQx!p)jz!kQqjI z=KX%9EX&8nFO+Y(jvRk<1OfZ}jz=|Uvgka-ZO2t1)!_Jn^R!>WW2AD!NzA&1ajQMt z*8&Qgkc$(pdT+c@;{_4eVe+TXkJ48gNKs8uVDjZzbkJ?D&jRjwzuXy+RIdVfvk)md zj%2wZ55CB2KNEzbsoX3uyS6~Zu_ePbT=i9T=$@S_^>fGTIbR09ep7^hp#Zl+WO0i` zzjtS!Y_fIlTrWx^PWmGx=yha-x}v$!o5NjpQ372@mtRbnbXUZ3u_=^ySDb&<$735y z*-2y3iDw@f3R~_UbhvDBtE159T;sZuTP^M9)Mm+M2oE=&h&WHshm~2iUB3?4dw>e^;@DciO(anEZcHYVOUEQJn0m+Z_21-h;{Ev3G z%O!QpEZ^V5)6CdX_gLB4Pkp!Be0lu=+Z)OV*U5pVD8w;x;y6Yt+f&&~)tY3Vrdi2# zvE-h%k;~Zz$Ns^A&$jGRZ1K9!dtXU^)Jp&1?V;PVeJUwU8v8SVoqkJh3e8wC+enF208zPJU}iV@6QfjnGKv=64)SkX_~%~vokY0OX@+( zt8WI;t{kZ5Z%MWAL?JBurQy{ac-nYH{cs6KbEv~|T^=JB4hh1(<*!B0{7?!Hc8B7Pv!WH)FWJQK0 zQ|^%XPTvbS>lCQ7X>ozERDYJi*wZ*HS7cydawI_3y$wGk@o7N3c$9kfuyBDgUwiml zgn77+w?IN!P*%F1+}!;mMu;1Aa{1fUTw%$c!W%kKMtnX2n#OAI4;lcP_L=&x9= z)AkA6wQD*_tsx=?Ij#8O29t*xBlre&#yzzQnH5ZPOg;U~_q#%$k=u+t5sPs_h2 z!cLAUh5h3mwk>u?C9IO?h~J7c2Q=^lr~w>D+}jmt`+;b02mdle0+ZM5>*87(!!f2a zwEi}GfeF3tY`^mf0cyCBsE{hTplA8h3~U#pS3eeeTVYgayw#4G!ue%L-= z+?a~S_-%{8le2Fn{?K59;64vN!0#I!(mHULS>5UrguCT;m(iMV pnV*$X{r779|L^=y`Fz"0.1.0-SNAPSHOT"] ; ring-router [metosin/reitit-spec "0.1.0-SNAPSHOT"] ; spec-coercion +

For discussions, there is a #reitit channel in Clojurians slack.

Examples

Simple router

(require '[reitit.core :as r])
@@ -577,7 +578,7 @@
     
 
diff --git a/performance.html b/performance.html
index 0665de1b..b304e8d3 100644
--- a/performance.html
+++ b/performance.html
@@ -424,24 +424,41 @@
                                 

Performance

-

There are many great routing libraries for Clojure(Script), but not many are optimized for perf. Reitit tries to be both great in features and really fast. Originally the routing was adopted from Pedestal, but it has been since mostly rewritten.

+

There 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.

Rationale

    -
  • Multiple routing algorithms, select for for a given route tree
  • +
  • Multiple routing algorithms, choose based on the route tree
  • Route flattening and re-ordering
  • Managed mutability over Immutability
  • Precompute/compile as much as possible (matches, middleware, routes)
  • Use abstractions that enable JVM optimizations
  • Use small functions to enable JVM Inlining
  • -
  • Protocols over Multimethods
  • +
  • Protocols over Multimethods (or Maps)
  • Records over Maps
  • Always be measuring
  • Don't trust the (micro-)benchmarks

Does routing performance matter?

-

Well, it depends. Some tested routing libs seem to spend more time resolving the routes than it takes to encode & decode a 1k JSON payload. For busy sites, this actually matters.

-

Example

-

The routing sample taken from bide README, run with a Late 2013 MacBook Pro, with the perf profile:

+

Well, 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.

+

Tests

+

All perf tests are found in the repo and have been run with the following setup:

+
;;
+;; start repl with `lein perf repl`
+;; perf measured with the following setup:
+;;
+;; Model Name:            MacBook Pro
+;; Model Identifier:      MacBookPro11,3
+;; Processor Name:        Intel Core i7
+;; Processor Speed:       2,5 GHz
+;; Number of Processors:  1
+;; Total Number of Cores: 4
+;; L2 Cache (per Core):   256 KB
+;; L3 Cache:              6 MB
+;; Memory:                16 GB
+;;
+

NOTE: 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.

+

Simple Example

+

The routing sample taken from bide README:

(require '[reitit.core :as r])
 (require '[criterium.core :as cc])
 
@@ -451,29 +468,41 @@
      ["/auth/recovery/token/:token" :auth/recovery]
      ["/workspace/:project/:page" :workspace/page]]))
 
-;; Execution time mean : 3.2 µs -> 312M ops/sec
+;; Execution time mean (per 1000) : 3.2 µs -> 312M ops/sec
 (cc/quick-bench
   (dotimes [_ 1000]
     (r/match-by-path routes "/auth/login")))
 
-;; Execution time mean : 530 µs -> 1.9M ops/sec
+;; Execution time mean (per 1000): 530 µs -> 1.9M ops/sec
 (cc/quick-bench
   (dotimes [_ 1000]
     (r/match-by-path routes "/workspace/1/1")))
 
-

Is that good?

-

Based on some quick perf tests, the first (static path) lookup is 300-500x faster and the second (wildcard path) lookup is 4-24x faster that the other tested routing libs (ataraxy, bidi, compojure and pedestal).

-

But, one shoudn't trust the benchmarks. Many libraries (here: compojure, pedestal and ataraxy) always match also on the request-method so they do more work. Also, real-life routing tables might look different and different libs might behave differently.

-

But, the perf should be good.

-

Value of perf tests?

-

Real value of perf tests is to get a internal baseline to optimize against. Also, to ensure that new features don't regress the performance.

-

It might be interesting to look out of the box and compare the fast Clojure routing libs to routers in other languages, like the routers in Go.

-

Performance guides

+

Based 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).

+

But, 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.

+

So, we need to test something more realistic.

+

RESTful apis

+

To 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.

+

Thanks to the prefix-tree algorithm, reitit-ring and Pedestal are fastest here.

+

Opensensors perf test

+

CQRS apis

+

Another 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).

+

Again, 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.

+

Opensensors perf test

+

NOTE: 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.

+

Why measure?

+

The 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.

+

Looking out of the box

+

It might be interesting to compare reitit with the routers in other languages, like the routers in Go.

+

Performance tips

Few things that have an effect on performance:

  • Wildcard-routes are an order of magnitude slower than static routes
  • It'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.
  • -
  • Move computation from request processing time into creation time, using by compiling middleware & route data.
  • +
  • Move computation from request processing time into creation time, using by compiling middleware & route data.
      +
    • Unmounted middleware (or interceptor) is infinitely faster than a mounted one effectively doing nothing.
    • +
    +
@@ -514,7 +543,7 @@ diff --git a/ring/compiling_middleware.html b/ring/compiling_middleware.html index c18b5bb6..4501fa48 100644 --- a/ring/compiling_middleware.html +++ b/ring/compiling_middleware.html @@ -530,7 +530,7 @@ diff --git a/ring/data_driven_middleware.html b/ring/data_driven_middleware.html index 4932a5e6..f04f510a 100644 --- a/ring/data_driven_middleware.html +++ b/ring/data_driven_middleware.html @@ -563,7 +563,7 @@ diff --git a/ring/dynamic_extensions.html b/ring/dynamic_extensions.html index 174e1717..03b5ffae 100644 --- a/ring/dynamic_extensions.html +++ b/ring/dynamic_extensions.html @@ -504,7 +504,7 @@ diff --git a/ring/index.html b/ring/index.html index 3070a8f1..7d1bf5d8 100644 --- a/ring/index.html +++ b/ring/index.html @@ -476,7 +476,7 @@ diff --git a/ring/parameter_coercion.html b/ring/parameter_coercion.html index 0744f875..e6846443 100644 --- a/ring/parameter_coercion.html +++ b/ring/parameter_coercion.html @@ -549,7 +549,7 @@ diff --git a/ring/ring.html b/ring/ring.html index b5f4d328..0f1cdf92 100644 --- a/ring/ring.html +++ b/ring/ring.html @@ -566,7 +566,7 @@ diff --git a/search_index.json b/search_index.json index 99b043fd..fede9a03 100644 --- a/search_index.json +++ b/search_index.json @@ -1 +1 @@ -{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"0.1.0","\"1\"}","\"ok\",","\"ok\"})","#match{:templ","#methods{...}","#object[user$handler]}","#partialmatch{:templ","#{:id}}","&","'())","'[reitit.cor","'[reitit.r","(","(:api","(app","(clojure.spec)","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":get",":get,",":handler",":meta",":middlewar",":name",":param",":path",":post",":put,",":request",":requir",":result",":uri",":user/ord",":wrap",";",">","[\"/admin\"","[\"/api\"","[\"/api/orders/:id\"","[\"/ping\"","[\"/users\"","[[\"/api/ping\"","[[#object[user$wrap]","[[wrap","[_]","[handler","[metosin/reitit","[request]","add","app","base","bi","both","class","clojure(script)","coercion","compilation,","conflict","conj","core","data","dependeci","direct","driven","dynam","exampl","extend","extens","fast","first","follow","functions,","handler","handler}]]])))","id","id)","id))","id)))","id]","id]]))","id}","id},","interceptor","introduct","librari","match?","meta","method","method.","middlewar","middleware,","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","separately:","simpl","small","snapshot\"]","spec","support","syntax","true","us","wrap","{:get","{:handler","{:id","{:middlewar","{:name","{:request","{:statu","{}"],"basics/":["base","basic","conflict","data","name","path","rout","router","syntax"],"basics/route_syntax.html":["\"/\"","'add","'get","(*path).","(:id)","([\"/get","(condp","(cqr","(defn","(for","(if","(name","(non","(str","::admin]","::admin}]","::db]]","::db]}","::db}]","::dev","::ping]","::ping]]","::ping}]]","::pong}]]",":command",":get",":let",":name",":post)]]",":queri",";","=","[\"\"","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/ping\"","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public/*path\"]","[::admin],","[::admin]}","[::api","[:command","[[\"/api/admin\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[:queri","[[type","[action","[add","[get","[interceptor]}}])","[path","action","argument","arguments:","catch","child","cqr","creat","data,","defin","dev","easi","exampl","false)","flattened:","gener","id\"]","ignored.","interceptor))","interceptor]","it'","list","method","mode?","mode?]","nest","nil","nil]","option","order\"","order]]","order]}}])","paramet","parameter:","parameters:","path","programmatically:","rout","route:","routes.","routes:","same","sequential)","simpl","string","syntax","tools\"","tools])])","two","type","user\"","user]","user]}}]","vector","wrap","{:get","{:interceptor","{:middlewar","{:name","{:post","{method"],"basics/router.html":["'[reitit.cor","(def","(defprotocol","(match","(option","(r/rout","(r/router","(requir","(rout","(router","(via","::ping]","::user]]]))",":a",":mix",":user/ping}]",":user/user}]]",";","[\"/api/user/:id\"","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","[[\"/api/ping\"","[thi","[this])","actual","argument","behind","coerc","compil","conflict","creat","created,","data","done:","expand","flatten","follow","function,","get","implement","instanc","map.","meta","name","name]","need","option","params]))","path","path])","protocol)","protocol.","protocol:","r])","raw","reitit.core/expand","reitit.core/rout","resolv","rout","router","router)","router:","routing,","satisfi","scene","select","step","take","tree","tree:","{:name"],"basics/path_based_routing.html":["\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/hello\")","\"1\"}}","#match{:templ","'[reitit.cor","(def","(onli","(r/match","(r/router","(requir","::ping]","::user]]]))",":a",":meta",":param",":path",":result",":user/user}",";","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","argument","base","done","exact","following:","function.","given","information:","match","match,","matched,","miss","nil","nil,","nil:","on","paramet","partialmatch,","path","provid","r])","reitit.core/match","return","revers","rout","router","router:","routing)","take","us","{:id","{:name"],"basics/name_based_routing.html":["\"/api/ping\"","\"/api/ping\"}","\"/api/user/1\"","\"/api/user/:id\"","\"/api/user/:id\",","\"1\"})","\"1\"}}","#match{:templ","#partialmatch{:templ","#{:id}","#{:id}}","'[reitit.cor","(def","(r/match","(r/partial","(r/rout","(r/router","(requir","(reverse)","/api/user/:id:","::kikka)","::ping)","::ping]","::user","::user)","::user))","::user]]]))",":a",":meta",":name",":param",":path",":requir",":result",":user/ping}",":user/user]",":user/user}",":user/user},",";","[\"/ping\"","[\"/user/:id\"","[:user/p","[[\"/api\"","base","data","defined,","except","exceptioninfo","given","list","match","match?","miss","name","name!","name.","names:","nil","nil,","nil:","param","paramet","parameters:","partialmatch","path","provid","r])","return","returned:","rout","route:","router","router)","router:","set,","throw","true","version:","{:id","{:name","{}"],"basics/route_data.html":["\"/ping\"","\"/ping\")","\"/ping\"}","#match{:templ","#{:admin}","#{:admin}}","#{:db","'[reitit.cor","(def","(r/match","(r/rout","(r/router","(requir","::db]","::ping)","::ping]","::users]","::users}",":a",":append,",":coerc",":compil",":displac",":handler",":meta",":name",":param",":path",":prepend,",":replac",":result",":role",":user/ping}",":user/ping}]",";","[\"/admin\"","[\"/api\"","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/db\"","[\"/ping\"","[\"/pong\"","[\"/users\"","[::api","[::api]","[::api]}","[::db]","[[\"/api/ping\"","[[\"/ping\"","^:replac","accumul","adapt","add","admin}}]]","admin}}]]]))","applic","argument","arguments.","attacht","behavior","both","case","cheng","client","co","colect","components.","created.","custom","data","data.","data:","default","default,","easi","enabl","exampl","exist","expand","expans","function","heart","hooks.","identity]","identity]}","identity}}]]","identity}}]]))","implement","interpet","it'","key","keyword","leaf","library.","map","map.","match","match.","merge.","meta","name","nest","nil","nil]","non","on","options.","overridden","path","principl","protocol","r])","recurs","reitit/expand","resolv","retriev","return","root","rout","router","router)","sequenti","target","them.","toward","tree:","trees,","us","via","whole","{:get","{:handler","{:interceptor","{:name","{:role","{}"],"basics/route_conflicts.html":["'[reitit.cor","(comp","(def","(r/router","(requir","/:user","/:version/statu","/bulk/:bulk","/public/*path",":a",":conflict",";",">","[\"/:user","[\"/:version/status\"]])","[\"/bulk/:bulk","[\"/public/*path\"]","[[\"/ping\"]","allow","callback.","called.","clojure.lang.exceptioninfo:","compilerexcept","conflicit","conflict","conflicts:","contain","default","default,","descript","effec","especi","ex","exampl","exceptioninfo","explicit","first","good,","id","id\"]","id/ord","id/orders\"]","implement","info","librari","log","lookup.","mani","match","merg","message.","multipl","pass","path","println","r])","reitit","reitit/conflict","resolut","resolv","rest","rout","router","routes)","routes:","run","singl","sources.","str)})","throw","thrown:","tree","unreachanle.","us","usually,","{:conflict"],"advanced/":["advanc","configur","differ","rout","router","valid"],"advanced/configuring_routers.html":["#{route}}","(default",":coerc",":compil",":conflict",":expand",":meta",":path",":rout",":router","=>","[])","actual","allow","arg","avail","base","clojure.spec","coerc","compil","configur","conflict","conflicts!)","data","descript","effect","expand","fast,","follow","function","handl","handler","handlers.","implement","initi","key","meta","nil","opt","option","options.","overrid","path","reitit.core/expand)","reitit.core/router:","reitit.core/throw","resolv","result","return","rout","route,","router","side","thing","throw","valid","vector","via","{rout"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::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","paramet","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:meta","#methods{:ani","#object[...],","#object[...]}","#object[...]},","%","&","'[reitit.r","(","(app","(conj","(constantli","(def","(defn","(fn","(fnil","(handler","(reitit/match","(reitit/routes))","(requir","(ring/get","(ring/r","(ring/rout","(some","(updat","2","200,","3","404}","404})))","::acc","::ping","::ping)",":a",":admin",":admin]]}",":api)]}",":bodi",":db",":db]]",":delet",":delete,",":delete]]",":get",":get,",":handler",":handler)})",":handler]}",":head,",":middlewar",":options,",":patch,",":path)",":post",":put,",":put.",":request",":uri",";",">","?arg","[\"/admin\"","[\"/api\"","[\"/db\"","[\"/ping\"","[#(wrap","[::acc]}]","[:api","[[\"/ping\"","[[wrap","[])","[]}}]]","[_]","[handler","[request]","[{:key","acc","ad","add","app","app:","appli","args.","ariti","async","base","both","built","chain","clojur","clojurescript,","compil","compiler,","conj","correctly:","creat","custom","defined.","element","enabl","ensur","error","expand","fn","following:","found","found.","function","function.","handl","handler","handler:","handler]","handler]))","handler])))","handlers,","handler}])))","handler}}]]])))","id))))","id]","it'","key,","keys:","level","look","match,","matches,","messages:","method","method.","methods.","middlewar","middleware:","name","nest","nil","node.j","normal","note","optim","optin","provid","reitit.ring/rout","request","respons","results:","resut","returned,","revers","ring","ring.","ring])","rout","router","router)","routing:","run","show","simpl","stuctur","submap.","support","third","too.","top","under","understood","us","valu","vector","vector.","work","wrap","{:handler","{:middlewar","{:name","{:request","{:statu","{:uri"],"ring/dynamic_extensions.html":["\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/ping\"})","\"forbidden\"}","\"ok\"}","\"ok\"}))","#{:admin}}","#{:admin}})","'[clojure.set","(and","(app","(constantli","(def","(defn","(effect","(fn","(handler","(if","(let","(not","(requir","(ring/get","(ring/r","(ring/rout","(seq","(set/subset?","(some","200,","403,","::role","::roles)]",":a",":bodi",":get,",":meta",":uri",";",">","[\"/admin\"","[\"/ping\"","[::roles]","[[\"/api\"","[handler]","[requir","[wrap","[{:key","access","ad","anonym","app","author","base","build","data","dynam","enforc","exampl","extens","extract","guard","handler","handler]","handler]]]]","hoc","inject","match","match)","match.","meta","method","middlewar","mount","public","reitit.ring/get","request","request)))))","request}]","requir","required)","ring","role","roles)))","roles:","roles]}})))","rout","route:","router","routes):","runtim","set])","system.","us","user","via","wrap","{::role","{:meta","{:middlewar","{:request","{:statu"],"ring/data_driven_middleware.html":["\"/api/ping\"})","\"middlewar","#{:session}","#{:user}","&","'[reitit.r","'[reitit.ring.middlewar","(a","(and","(app","(conj","(def","(defn","(duct/integrant/macchiato","(figwheel","(fn","(fnil","(handler","(middleware/cr","(of","(optional)","(requir","(ring/r","(ring/rout","(updat","1]","2","200,","2]]}","3","3]]","::acc","::wrap2","::wrap3",":a",":bodi",":descript",":gen",":get,",":handler",":handler)})",":handler]}",":middlewar",":name",":provides.",":requir",":role",":uri",":wrap",";","=>","[\"/api\"","[\"/ping\"","[1","[::acc]}]","[[wrap","[[wrap3","[])","[handler","[request]","[wrap2","[{:key","acc","access","actual","against","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/parameter_coercion.html":["\"/api/ping\"","\"0.1.123\"]","\"0.4.0\"]","\"1.9.0","\"everyth","&","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[spec","(+","(app","(def","(fn","(or","(recommend","(requir","(ring/r","(ring/rout","(s/def","(s/key","(st/spec","/","1,","1.9.0","200","200,","2}})","3}}","::i","::request","::request}","::respons","::response}}","::total","::x","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":form,",":get",":header",":paramet",":parameters.",":parameters}]",":path.",":query,",":req",":respons",":schema",":uri",":y",";","[\"/api\"","[\"/ping\"","[::total]))","[::x","[coercion/gen","[metosin/spec","[org.clojure/clojur","[org.clojure/spec.alpha","[x","[{{{:key","add","adopt","api.","app","befor","beta2\"]","clojur","clojure.spec","code","coerc","coercion","coercion,","coercion.","coercion/gen","coercion])","compojur","conforming,","currently,","data","data,","defin","defined):","depend","descript","differ","doesn't","else\")","error","exampl","fails,","follow","following:","format","gen","handler","implemen","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","key","manual","map","map,","meta","method","middlewar","mount","need","note:","on","option","origin","param","paramet","parameters/gen","parameters:","pluggabl","po","project:","protocol,","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","request","respons","response]","ring","ring,","ring])","rout","router","runtim","s])","ship","shipped,","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","thrown.","tool","tools.cor","tools.core/spec.","transform","un","under","understood","us","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:handler","{:meta","{:middlewar","{:paramet","{:request","{:schema","{:statu","{:total","{:x"],"ring/compiling_middleware.html":["\"gener","\"pluggabl","#(respond","%))","%))))","'[reitit.ring.middlewar","(","(:request","([request","([request]","(and","(coerc","(compiled)","(def","(defn","(fn","(handler","(if","(let","(middleware/cr","(records,","(requir","(respons","(ring/get","50%","::coerc",":a",":coercion",":coercion)",":gen",":meta",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","?wrap.","[coercer","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","below","better.","closur","code","code,","coerc","coercer","coercion","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","faster.","found","function","gen","handler","inform","instead","it?","itself","key","know","latter","less","link","local","lookup","match","meta","meta,","method","middlewar","middleware.","middleware/interceptor","middleware])","mount","mount.\"","much","naiv","nil.","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","read","reason","reasoning:","record","reitit.ring.coercion:","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","still,","system.","time.","to,","transform","two","type","us","via","want,","way","wrap","wrap.","written","yield","{:name"],"performance.html":["\"/auth/login\")))","\"/workspace/1/1\")))","&","'[criterium.cor","'[reitit.cor","(ataraxy,","(cc/quick","(def","(dotim","(here:","(matches,","(micro","(r/match","(r/router","(requir","(static","(wildcard",")benchmark","1.9m","1000]","1k","2013","24x","3.2","300","312m","4","500x","530",":",":a",":auth/login]",":auth/recovery]",":mix",":workspace/page]]))",";;","=>",">","[\"/auth/recovery/token/:token\"","[\"/workspace/:project/:page\"","[[\"/auth/login\"","[_","abstract","actual","adopt","against.","algorithms,","also,","alway","ataraxy)","base","baselin","behav","bench","benchmarks.","bide","bidi,","both","box","busi","but,","cc])","clojur","clojure(script),","compar","compil","compojur","compojure,","comput","conflict","created,","creation","data.","decod","depends.","differ","differently.","disabl","don't","effect","enabl","encod","ensur","exampl","execut","fast","fast.","faster","featur","few","first","flatten","found,","function","given","go.","good.","good?","great","guid","immut","inlin","interest","intern","it'","json","jvm","languages,","late","lib","librari","life","long","look","lookup","macbook","magnitud","manag","mani","map","match","matter?","matters.","mean","measur","method","middlewar","middleware,","mix","more","mostli","move","much","multimethod","multipl","mutabl","new","non","ok","on","ops/sec","optim","order","origin","out","over","path","path)","payload.","pedest","pedestal).","pedestal,","perf","perf.","perform","performance.","performance:","possibl","precompute/compil","pro,","process","profile:","protocol","quick","r])","rational","re","readme,","real","realli","record","regress","reitit","request","resolut","resolv","rewritten.","rout","router","router.","routes)","run","same","sampl","second","seem","select","separ","shoudn't","sites,","slower","small","so,","spend","static","still","tabl","take","taken","test","tests,","tests?","thing","time","time,","tree","tri","trust","us","valu","well,","wildcard","work.","µs"]},"length":19},"tokenStore":{"root":{"1":{"0":{"0":{"0":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}},"docs":{}},"docs":{}},"docs":{},".":{"8":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"9":{"docs":{},".":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"docs":{}},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{}},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},",":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"1":{"3":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"docs":{}},"4":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"3":{"0":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"1":{"2":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{}},"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{},"]":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}}},"4":{"0":{"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}},"4":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"docs":{}},"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"5":{"0":{"0":{"docs":{},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"docs":{},"%":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"3":{"0":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"docs":{}},"docs":{}},"docs":{},"\"":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}},"1":{"2":{"3":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"docs":{}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"4":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}},".":{"9":{"docs":{},".":{"0":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.003236245954692557}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"1":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},"\"":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"b":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{},"}":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"#":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},"{":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"]":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"d":{"docs":{},"b":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.01020408163265306}}}}}}}}}},"'":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"{":{"docs":{},":":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"(":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"i":{"docs":{},"d":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}},"o":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"n":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0070921985815602835}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224}}}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.043478260869565216},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.006042296072507553}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"e":{"docs":{},"t":{"docs":{},"!":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"/":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"?":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"f":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"v":{"docs":{},"i":{"docs":{},"a":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}},"+":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"w":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},":":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.017094017094017096}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"}":{"docs":{"./":{"ref":"./","tf":0.008547008547008548}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"c":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"s":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"k":{"docs":{},"i":{"docs":{},"k":{"docs":{},"k":{"docs":{},"a":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}}}}},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"p":{"docs":{},"i":{"docs":{},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"}":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},")":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"]":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01729106628242075}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.012084592145015106}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},")":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}}},"x":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0389908256880734}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},"e":{"docs":{},"r":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"]":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"e":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},";":{"docs":{"./":{"ref":"./","tf":0.11396011396011396},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.075},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.13043478260869565},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.10135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.17391304347826086},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.2545871559633027},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},";":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}},">":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.057971014492753624},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"[":{"0":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"1":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}},":":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"/":{"docs":{},":":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}}},"[":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"u":{"docs":{},"s":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}},"#":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.006472491909385114}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"i":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},":":{"docs":{},":":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"p":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{},"c":{"docs":{},"]":{"docs":{},"}":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0070921985815602835}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"p":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{},"(":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"a":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"advanced/":{"ref":"advanced/","tf":10.142857142857142}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"r":{"docs":{},"o":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"u":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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":{},"y":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"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":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"s":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0070921985815602835}},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.003236245954692557}}}}}}}}},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.14285714285714285},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.358333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3405797101449273},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"i":{"docs":{},"c":{"docs":{"basics/":{"ref":"basics/","tf":10.071428571428571}}}}}},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"d":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"i":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"a":{"docs":{},"v":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"t":{"docs":{},"a":{"2":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"o":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.023054755043228},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03625377643504532}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.02416918429003021}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015105740181269},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"s":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"!":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}}}}},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"s":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.030405405405405},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.3602794411177643},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.014970059880239521},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},",":{"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.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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.0030211480362537764}}}},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.014814814814815},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.336327345309381}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.00709219858156},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}}}},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"e":{"docs":{},"x":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"c":{"docs":{},"t":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.01418439716312},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.00906344410876133}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"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}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}},"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.0030211480362537764}}}}}}},"f":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"l":{"docs":{},"s":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"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.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"r":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"a":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"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}}}}}}}}},"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.017699115044247787},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}},"w":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}},"s":{"docs":{},".":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"r":{"docs":{},"d":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"ring/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.0070921985815602835}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"]":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},")":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"./":{"ref":"./","tf":10.002849002849002}}}}}}}},"?":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"f":{"docs":{},"o":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"r":{"docs":{},"m":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"g":{"docs":{},"n":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"t":{"docs":{},"'":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}},"y":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"n":{"docs":{},"k":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"f":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"e":{"docs":{},"a":{"docs":{},"f":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"s":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"o":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"o":{"docs":{},"k":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"n":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"?":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"s":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"p":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"i":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"a":{"docs":{},"g":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"k":{"docs":{},"e":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.003236245954692557}}}}}}},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.006472491909385114}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/":{"ref":"ring/","tf":0.16666666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":0.025280898876404494},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.393213572854291},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.018126888217522},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.006042296072507553}}},"]":{"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.0030211480362537764}}}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"x":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}},"d":{"docs":{},"e":{"docs":{},"?":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"s":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"v":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05309734513274336},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3840579710144922},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"!":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"i":{"docs":{},"v":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.02564102564102564},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"w":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"t":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"d":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"m":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}},"n":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"q":{"docs":{},"u":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"w":{"docs":{},"i":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.025936599423631}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.023668639053254437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.433333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"s":{"docs":{},"s":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"y":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"l":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"r":{"docs":{},"f":{"docs":{"performance.html":{"ref":"performance.html","tf":0.016181229773462782}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":10.009708737864077}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}},"o":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},",":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.027190332326283987},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"v":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"s":{"docs":{},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.020172910662824207},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.045317220543806644}},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"l":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"l":{"docs":{},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/":{"ref":"ring/","tf":10.166666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":5.019662921348314},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.017094017094017096},"basics/":{"ref":"basics/","tf":0.35714285714285715},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.0828402366863905},"basics/router.html":{"ref":"basics/router.html","tf":0.061946902654867256},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.370833333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.369565217391304},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.050675675675675},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.043478260869565},"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.11224489795918367},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.044444444444444446},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.032110091743119},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.020958083832335328},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.06796116504854369}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.039886039886039885},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.079646017699115},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.050724637681159424},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.037162162162162164},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812},"advanced/":{"ref":"advanced/","tf":0.2857142857142857},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.111111111111111},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":5.008426966292135},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},")":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}},"s":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.021739130434782608},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}},":":{"docs":{"./":{"ref":"./","tf":0.011396011396011397},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}},"o":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}},"u":{"docs":{},"n":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.002849002849002849}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"]":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"e":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}},"d":{"docs":{},"e":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"\"":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.011396011396011397}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"b":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.005917159763314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"p":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"e":{"docs":{},"p":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}}}},"u":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}},"l":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},",":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"n":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"h":{"docs":{},"i":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"o":{"docs":{},"w":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"u":{"docs":{},"d":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"a":{"docs":{},"p":{"docs":{},"e":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"/":{"docs":{},"*":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"e":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"s":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},")":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0030211480362537764}}}},"w":{"docs":{},"o":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"e":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}},"s":{"docs":{},".":{"docs":{},"\"":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.012944983818770227}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.009708737864077669}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}},"d":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}}},"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.002849002849002849},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0030211480362537764}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"l":{"docs":{},"d":{"docs":{},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.012944983818770227}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"l":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.002849002849002849},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.03550295857988166},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008547008547008548},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.014245014245014245},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},":":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"}":{"docs":{"./":{"ref":"./","tf":0.005698005698005698},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}},"=":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},">":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}},"?":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085}}}}},"i":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}}}},"v":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.02962962962962963},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.004587155963303},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},":":{"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},"performance.html":{"ref":"performance.html","tf":0.006472491909385114}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"/":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}}}}}}}}}}}}}}},"^":{"docs":{},":":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{},"^":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.014970059880239521},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"%":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"`":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"`":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"?":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}},"y":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},")":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"performance.html":{"ref":"performance.html","tf":0.003236245954692557}}}}},"v":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"µ":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.006472491909385114}}}}},"length":2111},"corpusTokens":["\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/api/admin/db\"})","\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"/api/ping\"})","\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/api/user/:id\",","\"/auth/login\")))","\"/favicon.ico\"})","\"/hello\")","\"/invalid\"})","\"/ping\"","\"/ping\")","\"/ping\"}","\"/ping\"})","\"/workspace/1/1\")))","\"0.1.0","\"0.1.123\"]","\"0.3.0\"]","\"0.4.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"everyth","\"forbidden\"}","\"gener","\"middlewar","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:meta","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:id}","#{:id}}","#{:session}","#{:user}","#{route}}","%","%)","%))","%))))","&","'())","'[clojure.set","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[criterium.cor","'[expound.alpha","'[reitit.cor","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[reitit.ring.middlewar","'[reitit.spec","'[reitit.spec])","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(a","(and","(app","(ataraxy,","(blank?","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec)","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(duct/integrant/macchiato","(effect","(figwheel","(fn","(fnil","(for","(handler","(here:","(if","(let","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(of","(onli","(option","(optional)","(or","(r/match","(r/partial","(r/rout","(r/router","(recommend","(records,","(reitit/match","(reitit/routes))","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/def","(s/explain","(s/key","(s/valid?","(seq","(set!","(set/subset?","(some","(st/spec","(start","(static","(stest/instru","(str","(updat","(via","(wildcard",")benchmark","...","...])","/","/:user","/:version/statu","/api/user/:id:","/bulk/:bulk","/public/*path","1,","1.8","1.9.0","1.9m","1000]","1]","1k","2","200","200,","2013","24x","2]]}","2})","2},","2}})","3","3.2","300","312m","3]]","3}}","4","403,","404}","404})))","50%","500x","530",":","::acc","::admin]","::admin}]","::coerc","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]))",":a",":admin",":admin]]}",":admin}",":api)]}",":api]]",":api]]}",":append,",":arg",":auth/login]",":auth/recovery]",":bodi",":body,",":body}",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":coerc",":coercion",":coercion)",":command",":compil",":conflict",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":expand",":form,",":gen",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":into",":let",":linear",":lookup",":meta",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":prefix",":prepend,",":provides.",":put,",":put.",":queri",":query,",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":singl",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":workspace/page]]))",":wrap",":wrap.",":y",";",";;","=","=>",">","?arg","?wrap.","[\"\"","[\"/:user","[\"/:version/status\"]])","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:users\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/api/orders/:id\"","[\"/api/ping\"","[\"/api/user/:id\"","[\"/auth/recovery/token/:token\"","[\"/bulk/:bulk","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public\"","[\"/public/*path\"]","[\"/user/:id\"","[\"/users\"","[\"/workspace/:project/:page\"","[\"pong\"]]])","[\"tenant1\"","[#(wrap","[%]","[...","[0]","[1","[1]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::roles]","[::total]))","[::x","[:api","[:command","[:rout","[:routes]","[:user/p","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[[wrap3","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion/gen","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[metosin/spec","[org.clojure/clojur","[org.clojure/clojurescript","[org.clojure/spec.alpha","[path","[request]","[requir","[respons","[thi","[this])","[wrap","[wrap2","[x","[{:key","[{{{:key","^:replac","^^^^^^","_]","`reitit.coercion.protocol/coercion`","`reitit/router)","abstract","acc","access","accumul","action","actual","ad","adapt","add","admin}}]]","admin}}]]]))","adopt","advanc","against","against.","algorithms,","allow","allowed.","alpha17\"]","also,","alway","and/or","anonym","anyth","api","api.","app","app:","appli","applic","approaches,","arbitrari","arg","args.","argument","arguments.","arguments:","ariti","ask","async","at:","ataraxy)","attacht","author","authorizationmiddlewar","authrorizationmiddlewar","avail","base","baselin","basic","befor","behav","behavior","behind","below","bench","benchmarks.","best","beta2\"]","better.","bi","bide","bidi,","bit","bootstrapping:","both","box","bubblin'","build","built","busi","but,","call","callback.","called.","case","catch","cc])","chain","chain,","cheng","child","class","client","clojur","clojure(script)","clojure(script),","clojure.core/string?","clojure.lang.exceptioninfo:","clojure.spec","clojurescript,","closur","co","code","code,","coerc","coercer","coercion","coercion,","coercion.","coercion/gen","coercion])","colect","compar","compil","compilation,","compiler,","compilerexcept","complain","compojur","compojure,","components.","compos","comput","configur","conflicit","conflict","conflicts!)","conflicts.","conflicts:","conform","conforming,","conj","contain","core","correctly:","cqr","creat","created,","created.","creation","currently,","custom","data","data,","data.","data:","db","db)","debug","decid","decod","default","default,","defin","defined):","defined,","defined.","definit","demonstr","depend","dependeci","depends.","descript","details.","detect","dev","develop","differ","differently.","differently:","direct","disabl","doc","document","doesn't","don't","done","done:","driven","dynam","e.g.","easi","easier","effec","effect","element","else\")","enabl","encod","end","enforc","ensur","entri","error","especi","etc.","etc.)","ex","exact","exampl","except","exceptioninfo","execut","exist","expand","expans","expect","explicit","expound","expound/printer)","expound])","extend","extens","extern","extract","fail","fails,","fals","false)","fast","fast,","fast.","faster","faster.","featur","few","first","fix","flatten","flattened:","fn","follow","following:","form","format","found","found,","found.","function","function,","function.","functions,","futur","gen","gener","get","given","go.","go:","good,","good.","good?","great","guard","guid","handl","handler","handler:","handler]","handler]))","handler])))","handler]]]]","handlers,","handlers.","handler}])))","handler}]]])))","handler}}]])))","handler}}]]])))","hard.","hash","heart","higher","higher)","hoc","hook","hooks.","id","id\"]","id)","id))","id)))","id))))","id/ord","id/orders\"]","id]","id]]))","idea","ident","identity]","identity]}","identity}}]]","identity}}]]))","id}","id},","ignored.","immut","implemen","implement","implementation.","in:","info","inform","information:","initi","inject","injectuserintorequestmiddlewar","inlin","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","interceptor","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","inventories,","issu","it'","it?","itself","json","jvm","key","key,","keys,","keys:","keyword","keywords)","kind","know","languages,","late","latter","leaf","less","level","lib","librari","library.","life","link","list","local","log","long","look","lookup","lookup.","macbook","magnitud","make","malipul","manag","mani","manipul","manual","map","map,","map.","match","match)","match,","match.","match?","matched,","matches,","matter?","matters.","mean","measur","merg","merge.","message.","messages:","meta","meta,","method","method.","methods.","middlewar","middleware)","middleware,","middleware.","middleware/interceptor","middleware:","middleware])","miss","mix","mode?","mode?]","more","more.","mostli","mount","mount.\"","move","much","multimethod","multipl","mutabl","naiv","name","name!","name.","name]","names:","namespac","need","nest","new","nil","nil,","nil.","nil:","nil]","node.j","non","normal","note","note:","nothing.\"","ok","on","opaqu","ops/sec","opt","optim","optin","option","option,","optionally,","options.","opts)]","opts]}","order","order\"","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters/gen","parameters:","params]))","part","partial","partialmatch","partialmatch,","pass","path","path)","path])","payload.","pedest","pedestal).","pedestal,","penalty.","perf","perf.","perform","performance.","performance:","pluggabl","po","possibl","pre","precompute/compil","predicate:","prefix","pretti","principl","print","println","pro,","problems.","process","processing,","processing.","produc","profile:","programmatically:","project:","propos","protocol","protocol)","protocol,","protocol.","protocol:","provid","public","purpose:","qualifi","quick","r])","raise))))))","raise)))))))}))","raise]","rational","raw","rc1\"]","re","read","readi","readme,","real","realli","reason","reasoning:","record","recurs","registri","regress","reitit","reitit,","reitit.core/expand","reitit.core/expand)","reitit.core/match","reitit.core/rout","reitit.core/router:","reitit.core/throw","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","reitit.ring.coercion:","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relev","request","request)","request)))","request)))))","request.","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response.","response]","responses)","rest","result","results,","results:","resut","retriev","return","returned,","returned:","revers","rewritten.","ring","ring,","ring.","ring])","role","roles)))","roles:","roles]}})))","root","rout","route))))","route,","route.","route:","router","router)","router).","router,","router.","router:","routers.","routes)","routes):","routes,","routes.","routes:","routing)","routing,","routing.","routing:","run","runtim","s/*explain","s/key","s])","same","sampl","satisfi","scene","second","see","seem","select","separ","separately:","sequenti","sequential)","set","set,","set])","sever","shape","ship","shipped,","shoudn't","show","side","simpl","singl","sites,","slow,","slower","small","snapshot\"]","so,","someth","sound","sources.","spec","spec/coercion}})))","spec:","spec])","special","specs.","spend","st])","start","static","statu","step","stest])","still","still,","sting","str)})","string","stuctur","style)","submap","submap.","succeeds,","suitabl","super","support","swagger:","syntax","system.","tabl","table.","take","taken","target","test","tests,","tests?","them.","thing","things.\"","third","throw","thrown.","thrown:","thu","time","time,","time.","to,","to:","todo","togeth","too.","tool","tools\"","tools.cor","tools.core/spec.","tools])])","top","toward","transform","tree","tree:","trees,","trees.","tri","true","trust","turn","two","type","typo","un","under","under:","understood","undrstand","unreachanle.","until","unwrap","us","used)","user","user\"","user]","user]}}]","usually,","val:","valid","valu","values.","vector","vector.","version:","via","want,","way","welcom","well,","whole","wildcard","with?","work","work.","worlds.","wrap","wrap.","wrap2","wrap3","wrap})","wrap}))","written","x","y)}})}}]]","y]}","yield","zero","{200","{::role","{:bodi","{:conflict","{:get","{:handler","{:id","{:interceptor","{:meta","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:statu","{:total","{:uri","{:x","{method","{rout","{}","µs"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Introduction","keywords":"","body":"Introduction\nReitit is a small Clojure(Script) library for data-driven routing.\n\nSimple data-driven route syntax\nRoute conflict resolution\nFirst-class route meta-data\nBi-directional routing\nPluggable coercion (clojure.spec)\nsupports both Middleware & Interceptors\nExtendable\nFast\n\nTo use Reitit, add the following dependecy to your project:\n[metosin/reitit \"0.1.0-SNAPSHOT\"]\n\nOptionally, the parts can be required separately:\n[metosin/reitit-core \"0.1.0-SNAPSHOT\"] ; just the router\n[metosin/reitit-ring \"0.1.0-SNAPSHOT\"] ; ring-router\n[metosin/reitit-spec \"0.1.0-SNAPSHOT\"] ; spec-coercion\n\nExamples\nSimple router\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api/ping\" ::ping]\n [\"/api/orders/:id\" ::order-by-id]]))\n\nRouting:\n(r/match-by-path router \"/api/ipa\")\n; nil\n\n(r/match-by-path router \"/api/ping\")\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-path router \"/api/orders/1\")\n; #Match{:template \"/api/orders/:id\"\n; :meta {:name ::order-by-id}\n; :result nil\n; :params {:id \"1\"}\n; :path \"/api/orders/1\"}\n\nReverse-routing:\n(r/match-by-name router ::ipa)\n; nil\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-name router ::order-by-id)\n; #PartialMatch{:template \"/api/orders/:id\"\n; :meta {:name :user/order-by-id}\n; :result nil\n; :params nil\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::order-by-id))\n; true\n\n(r/match-by-name router ::order-by-id {:id 2})\n; #Match{:template \"/api/orders/:id\",\n; :meta {:name ::order-by-id},\n; :result nil,\n; :params {:id 2},\n; :path \"/api/orders/2\"}\n\nRing-router\nRing-router adds support for :handler functions, :middleware and routing based on :request-method. It also supports pluggable parameter coercion (clojure.spec), data-driven middleware, route and middleware compilation, dynamic extensions and more.\n(require '[reitit.ring :as ring])\n\n(def handler [_]\n {:status 200, :body \"ok\"})\n\n(defn wrap [handler id]\n (fn [request]\n (update (handler request) :wrap (fnil conj '()) id)))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [[wrap :api]]}\n [\"/ping\" {:get handler\n :name ::ping}]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/users\" {:get handler\n :post handler}]]])))\n\nRouting:\n(app {:request-method :get, :uri \"/api/admin/users\"})\n; {:status 200, :body \"ok\", :wrap (:api :admin}\n\n(app {:request-method :put, :uri \"/api/admin/users\"})\n; nil\n\nReverse-routing:\n(require '[reitit.core :as r])\n\n(-> app (ring/get-router) (r/match-by-name ::ping))\n; #Match{:template \"/api/ping\"\n; :meta {:middleware [[#object[user$wrap] :api]]\n; :get {:handler #object[user$handler]}\n; :name ::ping}\n; :result #Methods{...}\n; :params nil\n; :path \"/api/ping\"}\n\n"},"basics/":{"url":"basics/","title":"Basics","keywords":"","body":"Basics\n\nRoute syntax\nRouter\nPath-based Routing\nName-based Routing\nRoute data\nRoute conflicts\n\n"},"basics/route_syntax.html":{"url":"basics/route_syntax.html","title":"Route syntax","keywords":"","body":"Route Syntax\nRoutes are defined as vectors of String path and optional (non-sequential) route argument child routes.\nRoutes can be wrapped in vectors and lists and nil routes are ignored.\nPaths can have path-parameters (:id) or catch-all-parameters (*path).\nExamples\nSimple route:\n[\"/ping\"]\n\nTwo routes:\n[[\"/ping\"]\n [\"/pong\"]]\n\nRoutes with route arguments:\n[[\"/ping\" ::ping]\n [\"/pong\" {:name ::pong}]]\n\nRoutes with path parameters:\n[[\"/users/:user-id\"]\n [\"/api/:version/ping\"]]\n\nRoute with catch-all parameter:\n[\"/public/*path\"]\n\nNested routes:\n[\"/api\"\n [\"/admin\" {:middleware [::admin]}\n [\"\" ::admin]\n [\"/db\" ::db]]\n [\"/ping\" ::ping]]\n\nSame routes flattened:\n[[\"/api/admin\" {:middleware [::admin], :name ::admin}]\n [\"/api/admin/db\" {:middleware [::admin], :name ::db}]\n [\"/api/ping\" {:name ::ping}]]\n\nGenerating routes\nAs routes are just data, it's easy to create them programmatically:\n(defn cqrs-routes [actions dev-mode?]\n [\"/api\" {:interceptors [::api ::db]}\n (for [[type interceptor] actions\n :let [path (str \"/\" (name interceptor))\n method (condp = type\n :query :get\n :command :post)]]\n [path {method {:interceptors [interceptor]}}])\n (if dev-mode? [\"/dev-tools\" ::dev-tools])])\n\n(cqrs-routes\n [[:query 'get-user]\n [:command 'add-user]\n [:command 'add-order]]\n false)\n; [\"/api\" {:interceptors [::api ::db]}\n; ([\"/get-user\" {:get {:interceptors [get-user]}}]\n; [\"/add-user\" {:post {:interceptors [add-user]}}]\n; [\"/add-order\" {:post {:interceptors [add-order]}}])\n; nil]\n\n"},"basics/router.html":{"url":"basics/router.html","title":"Router","keywords":"","body":"Router\nRoutes are just data and for routing, we need a router instance satisfying the reitit.core/Router protocol. Routers are created with reitit.core/router function, taking the raw routes and optionally an options map.\nThe Router protocol:\n(defprotocol Router\n (router-name [this])\n (routes [this])\n (options [this])\n (route-names [this])\n (match-by-path [this path])\n (match-by-name [this name] [this name params]))\n\nCreating a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nName of the created router:\n(r/router-name router)\n; :mixed-router\n\nThe flattened route tree:\n(r/routes router)\n; [[\"/api/ping\" {:name :user/ping}]\n; [\"/api/user/:id\" {:name :user/user}]]\n\nBehind the scenes\nWhen router is created, the following steps are done:\n\nroute tree is flattened\nroute arguments are expanded (via reitit.core/Expand protocol) and optionally coerced\nroute conflicts are resolved\nactual router implementation is selected and created\noptionally route meta-data gets compiled\n\n"},"basics/path_based_routing.html":{"url":"basics/path_based_routing.html","title":"Path-based Routing","keywords":"","body":"Path-based routing\nPath-based routing is done using the reitit.core/match-by-path function. It takes the router and path as arguments and returns one of the following:\n\nnil, no match\nPartialMatch, path matched, missing path-parameters (only in reverse-routing)\nMatch, exact match\n\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nNo match returns nil:\n(r/match-by-path router \"/hello\")\n; nil\n\nMatch provides the route information:\n(r/match-by-path router \"/api/user/1\")\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\n"},"basics/name_based_routing.html":{"url":"basics/name_based_routing.html","title":"Name-based Routing","keywords":"","body":"Name-based (reverse) routing\nAll routes which have :name route data defined, can also be matched by name.\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nListing all route names:\n(r/route-names router)\n; [:user/ping :user/user]\n\nNo match returns nil:\n(r/match-by-name router ::kikka)\nnil\n\nMatching a route:\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\nIf not all path-parameters are set, a PartialMatch is returned:\n(r/match-by-name router ::user)\n; #PartialMatch{:template \"/api/user/:id\",\n; :meta {:name :user/user},\n; :result nil,\n; :params nil,\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::user))\n; true\n\nWith provided path-parameters:\n(r/match-by-name router ::user {:id \"1\"})\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\nThere is also a exception throwing version:\n(r/match-by-name! router ::user)\n; ExceptionInfo missing path-params for route /api/user/:id: #{:id}\n\n"},"basics/route_data.html":{"url":"basics/route_data.html","title":"Route data","keywords":"","body":"Route data\nRoute data is the heart of this library. Routes can have any data attachted to them. Data is interpeted either by the client application or the Router via it's :coerce and :compile hooks. This enables co-existence of both adaptive and principled components.\nRoutes can have a non-sequential route argument that is expanded into route data map when a router is created.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\nThe expanded route data can be retrieved from a router with routes and is returned with match-by-path and match-by-name in case of a route match.\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\nNested route data\nFor nested route trees, route data is accumulated recursively from root towards leafs using meta-merge. Default behavior for colections is :append, but this can be overridden to :prepend, :replace or :displace using the target meta-data.\nAn example router with nested data:\n(def router\n (r/router\n [\"/api\" {:interceptors [::api]}\n [\"/ping\" ::ping]\n [\"/admin\" {:roles #{:admin}}\n [\"/users\" ::users]\n [\"/db\" {:interceptors [::db]\n :roles ^:replace #{:db-admin}}]]]))\n\nResolved route tree:\n(r/routes router)\n; [[\"/api/ping\" {:interceptors [::api]\n; :name :user/ping}]\n; [\"/api/admin/users\" {:interceptors [::api]\n; :roles #{:admin}\n; :name ::users} nil]\n; [\"/api/admin/db\" {:interceptors [::api ::db]\n; :roles #{:db-admin}}]]\n\nExpansion\nBy default, reitit/Expand protocol is used to expand the route arguments. It expands keywords into :name and functions into :handler key in the route data map. It's easy to add custom expanders and one can chenge the whole expand implementation via router options.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n"},"basics/route_conflicts.html":{"url":"basics/route_conflicts.html","title":"Route conflicts","keywords":"","body":"Route conflicts\nMany routing libraries allow multiple matches for a single path lookup. Usually, the first match is used and the rest are effecively unreachanle. This is not good, especially if route tree is merged from multiple sources.\nReitit resolves this by running explicit conflicit resolution when a router is called. Conflicting routes are passed into a :conflicts callback. Default implementation throws ex-info with a descriptive message.\nExamples router with conflicting routes:\n(require '[reitit.core :as r])\n\n(def routes\n [[\"/ping\"]\n [\"/:user-id/orders\"]\n [\"/bulk/:bulk-id\"]\n [\"/public/*path\"]\n [\"/:version/status\"]])\n\nBy default, ExceptionInfo is thrown:\n(r/router routes)\n; CompilerException clojure.lang.ExceptionInfo: Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\nJust logging the conflicts:\n(r/router\n routes\n {:conflicts (comp println reitit/conflicts-str)})\n; Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\n"},"advanced/":{"url":"advanced/","title":"Advanced","keywords":"","body":"Advanced\n\nConfiguring routers\nDifferent Routers\nRoute Validation\n\n"},"advanced/configuring_routers.html":{"url":"advanced/configuring_routers.html","title":"Configuring routers","keywords":"","body":"Configuring Routers\nRouters can be configured via options. Options allow things like clojure.spec validation for meta-data and fast, compiled handlers. The following options are available for the reitit.core/router:\n\n\n\nkey\ndescription\n\n\n\n\n:path\nBase-path for routes\n\n\n:routes\nInitial resolved routes (default [])\n\n\n:meta\nInitial expanded route-meta vector (default [])\n\n\n:expand\nFunction of arg opts => meta to expand route arg to route meta-data (default reitit.core/expand)\n\n\n:coerce\nFunction of route opts => route to coerce resolved route, can throw or return nil\n\n\n:compile\nFunction of route opts => result to compile a route handler\n\n\n:conflicts\nFunction of {route #{route}} => side-effect to handle conflicting routes (default reitit.core/throw-on-conflicts!)\n\n\n:router\nFunction of routes opts => router to override the actual router implementation\n\n\n\n"},"advanced/different_routers.html":{"url":"advanced/different_routers.html","title":"Different Routers","keywords":"","body":"Different Routers\nReitit ships with several different implementations for the Router protocol, originally based on the Pedestal implementation. router function selects the most suitable implementation by inspecting the expanded routes. The implementation can be set manually using :router option, see configuring routers.\n\n\n\nrouter\ndescription\n\n\n\n\n:linear-router\nMatches the routes one-by-one starting from the top until a match is found. Works with any kind of routes. Slow, but works with all route trees.\n\n\n:lookup-router\nFast router, uses hash-lookup to resolve the route. Valid if no paths have path or catch-all parameters and there are no Route conflicts.\n\n\n:mixed-router\nCreates internally a :prefix-tree-router and a :lookup-router and used them to effectively get best-of-both-worlds. Valid only if there are no Route conflicts.\n\n\n:single-static-path-router\nSuper fast router: sting-matches the route. Valid only if there is one static route.\n\n\n:prefix-tree-router\nRouter that creates a prefix-tree out of an route table. Much faster than :linear-router. Valid only if there are no Route conflicts.\n\n\n\nThe router name can be asked from the router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/api/:users\" ::users]]))\n\n(r/router-name router)\n; :mixed-router\n\n"},"advanced/route_validation.html":{"url":"advanced/route_validation.html","title":"Route Validation","keywords":"","body":"Route validation\nNamespace reitit.spec contains clojure.spec definitions for raw-routes, routes, router and router options.\nNOTE: Use of specs requires to use one of the following:\n\n[org.clojure/clojurescript \"1.9.660\"] (or higher)\n[org.clojure/clojure \"1.9.0-RC1\"] (or higher)\n[clojure-future-spec \"1.9.0-alpha17\"] (if Clojure 1.8 is used)\n\nExample\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec :as spec])\n\n(def routes-from-db\n [\"tenant1\" ::tenant1])\n\n(s/valid? ::spec/raw-routes routes-from-db)\n; false\n\n(s/explain ::spec/raw-routes routes-from-db)\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/path at: [:route :path] predicate: (or (blank? %) (starts-with? % \"/\"))\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; In: [1] val: :user/tenant1 fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; :clojure.spec.alpha/spec :reitit.spec/raw-routes\n; :clojure.spec.alpha/value [\"tenant1\" :user/tenant1]\n\nAt development time\nreitit.core/router can be instrumented and use something like expound to pretty-print the spec problems.\nFirst add a :dev dependency to:\n[expound \"0.3.0\"] ; or higher\n\nSome bootstrapping:\n(require '[clojure.spec.test.alpha :as stest])\n(require '[expound.alpha :as expound])\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec])\n\n(stest/instrument `reitit/router)\n(set! s/*explain-out* expound/printer)\n\nAnd we are ready to go:\n(require '[reitit.core :as r])\n\n(r/router\n [\"/api\"\n [\"/public\"\n [\"/ping\"]\n [\"pong\"]]])\n\n; CompilerException clojure.lang.ExceptionInfo: Call to #'reitit.core/router did not conform to spec:\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([\"/api\" ...])\n; ^^^^^^\n;\n; should satisfy\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; or\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([... [... ... [\"pong\"]]])\n; ^^^^^^\n;\n; should satisfy\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; or\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/path:\n; (clojure.spec.alpha/and\n; clojure.core/string?\n; (clojure.core/fn\n; [%]\n; (clojure.core/or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\"))))\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -------------------------\n; Detected 2 errors\n\nValidating route data\nTODO\n"},"ring/":{"url":"ring/","title":"Ring","keywords":"","body":"Ring\n\nRing-router\nDynamic extensions\nData-driven Middleware\nParameter coercion\nCompiling middleware\n\n"},"ring/ring.html":{"url":"ring/ring.html","title":"Ring-router","keywords":"","body":"Ring Router\nRing-router adds support for handlers, middleware and routing based on :request-method. Ring-router is created with reitit.ring/router function. It runs a custom route compiler, creating a optimized stucture for handling route matches, with compiled middleware chain & handlers for all request methods. It also ensures that all routes have a :handler defined.\nSimple Ring app:\n(require '[reitit.ring :as ring])\n\n(defn handler [_]\n {:status 200, :body \"ok\"})\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler])))\n\nApplying the handler:\n(app {:request-method :get, :uri \"/favicon.ico\"})\n; nil\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\nThe expanded routes shows the compilation results:\n(-> app (ring/get-router) (reitit/routes))\n; [[\"/ping\"\n; {:handler #object[...]}\n; #Methods{:any #Endpoint{:meta {:handler #object[...]},\n; :handler #object[...],\n; :middleware []}}]]\n\nNote that the compiled resuts as third element in the route vector.\nRequest-method based routing\nHandler are also looked under request-method keys: :get, :head, :patch, :delete, :options, :post or :put. Top-level handler is used if request-method based handler is not found.\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" {:name ::ping\n :get handler\n :post handler}])))\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\n(app {:request-method :put, :uri \"/ping\"})\n; nil\n\nName-based reverse routing:\n(-> app\n (ring/get-router)\n (reitit/match-by-name ::ping)\n :path)\n; \"/ping\"\n\nMiddleware\nMiddleware can be added with a :middleware key, either to top-level or under :request-method submap. It's value should be a vector value of the following:\n\nnormal ring middleware function handler -> request -> response\nvector of middleware function handler ?args -> request -> response and optinally it's args.\n\nA middleware and a handler:\n(defn wrap [handler id]\n (fn [request]\n (handler (update request ::acc (fnil conj []) id))))\n\n(defn handler [{:keys [::acc]}]\n {:status 200, :body (conj acc :handler)})\n\nApp with nested middleware:\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [#(wrap % :api)]}\n [\"/ping\" handler]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/db\" {:middleware [[wrap :db]]\n :delete {:middleware [[wrap :delete]]\n :handler handler}}]]])))\n\nMiddleware is applied correctly:\n(app {:request-method :delete, :uri \"/api/ping\"})\n; {:status 200, :body [:api :handler]}\n\n(app {:request-method :delete, :uri \"/api/admin/db\"})\n; {:status 200, :body [:api :admin :db :delete :handler]}\n\nNot found\nIf no routes match, nil is returned, which is not understood by Ring.\nEnabling custom error messages:\n(def app\n (some-fn\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler]))\n (constantly {:status 404})))\n\n(app {:uri \"/invalid\"})\n; {:status 404}\n\nAsync Ring\nAll built-in middleware provide both 2 and 3-arity and are compiled for both Clojure & ClojureScript, so they work with Async Ring and Node.js too.\n"},"ring/dynamic_extensions.html":{"url":"ring/dynamic_extensions.html","title":"Dynamic extensions","keywords":"","body":"Dynamic extensions\nring-handler injects the Match into a request and it can be extracted at runtime with reitit.ring/get-match. This can be used to build ad-hoc extensions to the system.\nExample middleware to guard routes based on user roles:\n(require '[clojure.set :as set])\n\n(defn wrap-enforce-roles [handler]\n (fn [{:keys [::roles] :as request}]\n (let [required (some-> request (ring/get-match) :meta ::roles)]\n (if (and (seq required) (not (set/subset? required roles)))\n {:status 403, :body \"forbidden\"}\n (handler request)))))\n\nMounted to an app via router meta-data (effecting all routes):\n(def handler (constantly {:status 200, :body \"ok\"}))\n\n(def app\n (ring/ring-handler\n (ring/router\n [[\"/api\"\n [\"/ping\" handler]\n [\"/admin\" {::roles #{:admin}}\n [\"/ping\" handler]]]]\n {:meta {:middleware [wrap-enforce-roles]}})))\n\nAnonymous access to public route:\n(app {:request-method :get, :uri \"/api/ping\"})\n; {:status 200, :body \"ok\"}\n\nAnonymous access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\"})\n; {:status 403, :body \"forbidden\"}\n\nAuthorized access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\", ::roles #{:admin}})\n; {:status 200, :body \"ok\"}\n\n"},"ring/data_driven_middleware.html":{"url":"ring/data_driven_middleware.html","title":"Data-driven Middleware","keywords":"","body":"Data-driven Middleware\nRing defines middleware as a function of type handler & 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/parameter_coercion.html":{"url":"ring/parameter_coercion.html","title":"Parameter coercion","keywords":"","body":"Parameter coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api. Reitit ships with reitit.ring.coercion.spec/SpecCoercion providing implemenation for clojure.spec and data-specs.\nNOTE: Before Clojure 1.9.0 is shipped, to use the spec-coercion, one needs to add the following dependencies manually to the project:\n[org.clojure/clojure \"1.9.0-beta2\"]\n[org.clojure/spec.alpha \"0.1.123\"]\n[metosin/spec-tools \"0.4.0\"]\n\nRing request and response coercion\nTo use Coercion with Ring, one needs to do the following:\n\nDefine parameters and responses as data into route meta-data, in format adopted from ring-swagger:\n:parameters map, with submaps for different parameters: :query, :body, :form, :header and :path. Parameters are defined in the format understood by the Coercion.\n:responses map, with response status codes as keys (or :default for \"everything else\") with maps with :schema and optionally :description as values.\n\n\nDefine a Coercion to route meta-data under :coercion\nMount request & response coercion middleware to the routes (recommended to mount to all routes under router as they mounted only to routes which have the parameters / responses defined):\nreitit.ring.coercion/gen-wrap-coerce-parameters\ngen-wrap-coerce-parameters/gen-wrap-coerce-responses\n\n\n\nIf the request coercion succeeds, the coerced parameters are injected into request under :parameters.\nIf either request or response coercion fails, an descriptive error is thrown.\nExample with data-specs\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body {:x int?, :y int?}}\n :responses {200 {:schema {:total pos-int?}}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\nExample with specs\nCurrently, clojure.spec doesn't support runtime transformations via conforming, so one needs to wrap all specs with spec-tools.core/spec.\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n(require '[clojure.spec.alpha :as s])\n(require '[spec-tools.core :as st])\n\n(s/def ::x (st/spec int?))\n(s/def ::y (st/spec int?))\n(s/def ::total int?)\n(s/def ::request (s/keys :req-un [::x ::y]))\n(s/def ::response (s/keys :req-un [::total]))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body ::request}\n :responses {200 {:schema ::response}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\n"},"ring/compiling_middleware.html":{"url":"ring/compiling_middleware.html","title":"Compiling middleware","keywords":"","body":"Compiling Middleware\nThe dynamic extensions is a easy way to extend the system. To enable fast lookups into route data, we can compile them into any shape (records, functions etc.) we want, enabling fast access at request-time.\nStill, we can do much better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. It can also decide not to mount itself by returning nil. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?\nTo enable this we use middleware records :gen-wrap key instead of the normal :wrap. :gen-wrap expects a function of route-meta router-opts => ?wrap.\nTo demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen-wrap. Actual codes can be found in reitit.ring.coercion:\nNaive\n\nReads the compiled route information on every request.\n\n(defn wrap-coerce-response\n \"Pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise will do nothing.\"\n [handler]\n (fn\n ([request]\n (let [response (handler request)\n method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (coerce-response coercers request response))\n response)))\n ([request respond raise]\n (let [method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (handler request #(respond (coerce-response coercers request %))))\n (handler request respond raise))))))\n\nCompiled\n\nRoute information is provided via a closure\nPre-compiled coercers\nMounts only if :coercion and :responses are defined for the route\n\n(require '[reitit.ring.middleware :as middleware])\n\n(def gen-wrap-coerce-response\n \"Generator for pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise does not mount.\"\n (middleware/create\n {:name ::coerce-response\n :gen-wrap (fn [{:keys [responses coercion opts]} _]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (fn [handler]\n (fn\n ([request]\n (coerce-response coercers request (handler request)))\n ([request respond raise]\n (handler request #(respond (coerce-response coercers request %)) raise)))))))}))\n\nThe latter has 50% less code, is easier to reason about and is much faster.\n"},"performance.html":{"url":"performance.html","title":"Performance","keywords":"","body":"Performance\nThere are many great routing libraries for Clojure(Script), but not many are optimized for perf. Reitit tries to be both great in features and really fast. Originally the routing was adopted from Pedestal, but it has been since mostly rewritten.\nRationale\n\nMultiple routing algorithms, select for for a given route tree\nRoute flattening and re-ordering\nManaged mutability over Immutability\nPrecompute/compile as much as possible (matches, middleware, routes)\nUse abstractions that enable JVM optimizations\nUse small functions to enable JVM Inlining\nProtocols over Multimethods\nRecords over Maps\nAlways be measuring\nDon't trust the (micro-)benchmarks\n\nDoes routing performance matter?\nWell, it depends. Some tested routing libs seem to spend more time resolving the routes than it takes to encode & decode a 1k JSON payload. For busy sites, this actually matters.\nExample\nThe routing sample taken from bide README, run with a Late 2013 MacBook Pro, with the perf profile:\n(require '[reitit.core :as r])\n(require '[criterium.core :as cc])\n\n(def routes\n (r/router\n [[\"/auth/login\" :auth/login]\n [\"/auth/recovery/token/:token\" :auth/recovery]\n [\"/workspace/:project/:page\" :workspace/page]]))\n\n;; Execution time mean : 3.2 µs -> 312M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/auth/login\")))\n\n;; Execution time mean : 530 µs -> 1.9M ops/sec\n(cc/quick-bench\n (dotimes [_ 1000]\n (r/match-by-path routes \"/workspace/1/1\")))\n\nIs that good?\nBased on some quick perf tests, the first (static path) lookup is 300-500x faster and the second (wildcard path) lookup is 4-24x faster that the other tested routing libs (ataraxy, bidi, compojure and pedestal).\nBut, one shoudn't trust the benchmarks. Many libraries (here: compojure, pedestal and ataraxy) always match also on the request-method so they do more work. Also, real-life routing tables might look different and different libs might behave differently.\nBut, the perf should be good.\nValue of perf tests?\nReal value of perf tests is to get a internal baseline to optimize against. Also, to ensure that new features don't regress the performance.\nIt might be interesting to look out of the box and compare the fast Clojure routing libs to routers in other languages, like the routers in Go.\nPerformance guides\nFew things that have an effect on performance:\n\nWildcard-routes are an order of magnitude slower than static routes\nIt's ok to mix non-wildcard and wildcard routes in a same routing tree as long as you don't disable the conflict resolution => if no conflicting routes are found, a :mixed-router can be created, which internally has a fast static path router and a separate wildcard-router. So, the static paths are still fast.\nMove computation from request processing time into creation time, using by compiling middleware & route data.\n\n"}}} \ No newline at end of file +{"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)","(clojure.spec),","(def","(defn","(fn","(fnil","(handler","(r/match","(r/partial","(r/router","(requir","(ring/get","(ring/r","(ring/rout","(updat","200,","2})","2},","::ipa)","::order","::ping)","::ping))","::ping]","::ping}","::ping}]",":a",":admin]]}",":admin}",":api]]",":api]]}",":bodi",":get",":get,",":handler",":meta",":middlewar",":name",":param",":path",":post",":put,",":request",":requir",":result",":uri",":user/ord",":wrap",";",">","[\"/admin\"","[\"/api\"","[\"/api/orders/:id\"","[\"/ping\"","[\"/users\"","[[\"/api/ping\"","[[#object[user$wrap]","[[wrap","[_]","[handler","[metosin/reitit","[request]","add","app","base","bi","both","channel","class","clojure(script)","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},","interceptor","introduct","librari","match?","meta","method","method.","middlewar","middleware,","more.","name","nil","nil,","optionally,","paramet","part","path","pluggabl","project:","r])","reitit","reitit,","request)","requir","resolut","revers","ring","ring])","rout","router","router)","routing.","routing:","separately:","simpl","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.","meta","name","name]","need","option","params]))","path","path])","protocol)","protocol.","protocol:","r])","raw","reitit.core/expand","reitit.core/rout","resolv","rout","router","router)","router:","routing,","satisfi","scene","select","step","take","tree","tree:","{:name"],"basics/path_based_routing.html":["\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/hello\")","\"1\"}}","#match{:templ","'[reitit.cor","(def","(onli","(r/match","(r/router","(requir","::ping]","::user]]]))",":a",":meta",":param",":path",":result",":user/user}",";","[\"/ping\"","[\"/user/:id\"","[[\"/api\"","argument","base","done","exact","following:","function.","given","information:","match","match,","matched,","miss","nil","nil,","nil:","on","paramet","partialmatch,","path","provid","r])","reitit.core/match","return","revers","rout","router","router:","routing)","take","us","{:id","{:name"],"basics/name_based_routing.html":["\"/api/ping\"","\"/api/ping\"}","\"/api/user/1\"","\"/api/user/:id\"","\"/api/user/:id\",","\"1\"})","\"1\"}}","#match{:templ","#partialmatch{:templ","#{:id}","#{:id}}","'[reitit.cor","(def","(r/match","(r/partial","(r/rout","(r/router","(requir","(reverse)","/api/user/:id:","::kikka)","::ping)","::ping]","::user","::user)","::user))","::user]]]))",":a",":meta",":name",":param",":path",":requir",":result",":user/ping}",":user/user]",":user/user}",":user/user},",";","[\"/ping\"","[\"/user/:id\"","[:user/p","[[\"/api\"","base","data","defined,","except","exceptioninfo","given","list","match","match?","miss","name","name!","name.","names:","nil","nil,","nil:","param","paramet","parameters:","partialmatch","path","provid","r])","return","returned:","rout","route:","router","router)","router:","set,","throw","true","version:","{:id","{:name","{}"],"basics/route_data.html":["\"/ping\"","\"/ping\")","\"/ping\"}","#match{:templ","#{:admin}","#{:admin}}","#{:db","'[reitit.cor","(def","(r/match","(r/rout","(r/router","(requir","::db]","::ping)","::ping]","::users]","::users}",":a",":append,",":coerc",":compil",":displac",":handler",":meta",":name",":param",":path",":prepend,",":replac",":result",":role",":user/ping}",":user/ping}]",";","[\"/admin\"","[\"/api\"","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/db\"","[\"/ping\"","[\"/pong\"","[\"/users\"","[::api","[::api]","[::api]}","[::db]","[[\"/api/ping\"","[[\"/ping\"","^:replac","accumul","adapt","add","admin}}]]","admin}}]]]))","applic","argument","arguments.","attacht","behavior","both","case","cheng","client","co","colect","components.","created.","custom","data","data.","data:","default","default,","easi","enabl","exampl","exist","expand","expans","function","heart","hooks.","identity]","identity]}","identity}}]]","identity}}]]))","implement","interpet","it'","key","keyword","leaf","library.","map","map.","match","match.","merge.","meta","name","nest","nil","nil]","non","on","options.","overridden","path","principl","protocol","r])","recurs","reitit/expand","resolv","retriev","return","root","rout","router","router)","sequenti","target","them.","toward","tree:","trees,","us","via","whole","{:get","{:handler","{:interceptor","{:name","{:role","{}"],"basics/route_conflicts.html":["'[reitit.cor","(comp","(def","(r/router","(requir","/:user","/:version/statu","/bulk/:bulk","/public/*path",":a",":conflict",";",">","[\"/:user","[\"/:version/status\"]])","[\"/bulk/:bulk","[\"/public/*path\"]","[[\"/ping\"]","allow","callback.","called.","clojure.lang.exceptioninfo:","compilerexcept","conflicit","conflict","conflicts:","contain","default","default,","descript","effec","especi","ex","exampl","exceptioninfo","explicit","first","good,","id","id\"]","id/ord","id/orders\"]","implement","info","librari","log","lookup.","mani","match","merg","message.","multipl","pass","path","println","r])","reitit","reitit/conflict","resolut","resolv","rest","rout","router","routes)","routes:","run","singl","sources.","str)})","throw","thrown:","tree","unreachanle.","us","usually,","{:conflict"],"advanced/":["advanc","configur","differ","rout","router","valid"],"advanced/configuring_routers.html":["#{route}}","(default",":coerc",":compil",":conflict",":expand",":meta",":path",":rout",":router","=>","[])","actual","allow","arg","avail","base","clojure.spec","coerc","compil","configur","conflict","conflicts!)","data","descript","effect","expand","fast,","follow","function","handl","handler","handlers.","implement","initi","key","meta","nil","opt","option","options.","overrid","path","reitit.core/expand)","reitit.core/router:","reitit.core/throw","resolv","result","return","rout","route,","router","side","thing","throw","valid","vector","via","{rout"],"advanced/different_routers.html":["'[reitit.cor","(def","(r/router","(requir","::ping]","::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","paramet","ring","router"],"ring/ring.html":["\"/api/admin/db\"})","\"/api/ping\"})","\"/favicon.ico\"})","\"/invalid\"})","\"/ping\"","\"/ping\"})","\"ok\"}","\"ok\"})","#endpoint{:meta","#methods{:ani","#object[...],","#object[...]}","#object[...]},","%","&","'[reitit.r","(","(app","(conj","(constantli","(def","(defn","(fn","(fnil","(handler","(reitit/match","(reitit/routes))","(requir","(ring/get","(ring/r","(ring/rout","(some","(updat","2","200,","3","404}","404})))","::acc","::ping","::ping)",":a",":admin",":admin]]}",":api)]}",":bodi",":db",":db]]",":delet",":delete,",":delete]]",":get",":get,",":handler",":handler)})",":handler]}",":head,",":middlewar",":options,",":patch,",":path)",":post",":put,",":put.",":request",":uri",";",">","?arg","[\"/admin\"","[\"/api\"","[\"/db\"","[\"/ping\"","[#(wrap","[::acc]}]","[:api","[[\"/ping\"","[[wrap","[])","[]}}]]","[_]","[handler","[request]","[{:key","acc","ad","add","app","app:","appli","args.","ariti","async","base","both","built","chain","clojur","clojurescript,","compil","compiler,","conj","correctly:","creat","custom","defined.","element","enabl","ensur","error","expand","fn","following:","found","found.","function","function.","handl","handler","handler:","handler]","handler]))","handler])))","handlers,","handler}])))","handler}}]]])))","id))))","id]","it'","key,","keys:","level","look","match,","matches,","messages:","method","method.","methods.","middlewar","middleware:","name","nest","nil","node.j","normal","note","optim","optin","provid","reitit.ring/rout","request","respons","results:","resut","returned,","revers","ring","ring.","ring])","rout","router","router)","routing:","run","show","simpl","stuctur","submap.","support","third","too.","top","under","understood","us","valu","vector","vector.","work","wrap","{:handler","{:middlewar","{:name","{:request","{:statu","{:uri"],"ring/dynamic_extensions.html":["\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/ping\"})","\"forbidden\"}","\"ok\"}","\"ok\"}))","#{:admin}}","#{:admin}})","'[clojure.set","(and","(app","(constantli","(def","(defn","(effect","(fn","(handler","(if","(let","(not","(requir","(ring/get","(ring/r","(ring/rout","(seq","(set/subset?","(some","200,","403,","::role","::roles)]",":a",":bodi",":get,",":meta",":uri",";",">","[\"/admin\"","[\"/ping\"","[::roles]","[[\"/api\"","[handler]","[requir","[wrap","[{:key","access","ad","anonym","app","author","base","build","data","dynam","enforc","exampl","extens","extract","guard","handler","handler]","handler]]]]","hoc","inject","match","match)","match.","meta","method","middlewar","mount","public","reitit.ring/get","request","request)))))","request}]","requir","required)","ring","role","roles)))","roles:","roles]}})))","rout","route:","router","routes):","runtim","set])","system.","us","user","via","wrap","{::role","{:meta","{:middlewar","{:request","{:statu"],"ring/data_driven_middleware.html":["\"/api/ping\"})","\"middlewar","#{:session}","#{:user}","&","'[reitit.r","'[reitit.ring.middlewar","(a","(and","(app","(conj","(def","(defn","(duct/integrant/macchiato","(figwheel","(fn","(fnil","(handler","(middleware/cr","(of","(optional)","(requir","(ring/r","(ring/rout","(updat","1]","2","200,","2]]}","3","3]]","::acc","::wrap2","::wrap3",":a",":bodi",":descript",":gen",":get,",":handler",":handler)})",":handler]}",":middlewar",":name",":provides.",":requir",":role",":uri",":wrap",";","=>","[\"/api\"","[\"/ping\"","[1","[::acc]}]","[[wrap","[[wrap3","[])","[handler","[request]","[wrap2","[{:key","acc","access","actual","against","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/parameter_coercion.html":["\"/api/ping\"","\"0.1.123\"]","\"0.4.0\"]","\"1.9.0","\"everyth","&","'[clojure.spec.alpha","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[spec","(+","(app","(def","(fn","(or","(recommend","(requir","(ring/r","(ring/rout","(s/def","(s/key","(st/spec","/","1,","1.9.0","200","200,","2}})","3}}","::i","::request","::request}","::respons","::response}}","::total","::x","::y]))",":a",":bodi",":body,",":body}",":coercion",":default",":descript",":form,",":get",":header",":paramet",":parameters.",":parameters}]",":path.",":query,",":req",":respons",":schema",":uri",":y",";","[\"/api\"","[\"/ping\"","[::total]))","[::x","[coercion/gen","[metosin/spec","[org.clojure/clojur","[org.clojure/spec.alpha","[x","[{{{:key","add","adopt","api.","app","befor","beta2\"]","clojur","clojure.spec","code","coerc","coercion","coercion,","coercion.","coercion/gen","coercion])","compojur","conforming,","currently,","data","data,","defin","defined):","depend","descript","differ","doesn't","else\")","error","exampl","fails,","follow","following:","format","gen","handler","implemen","inject","int?)","int?))","int?,","int?}}","int?}}}","introduc","key","manual","map","map,","meta","method","middlewar","mount","need","note:","on","option","origin","param","paramet","parameters/gen","parameters:","pluggabl","po","project:","protocol,","provid","reitit","reitit.ring.coercion.protocol/coercion","reitit.ring.coercion.spec/speccoercion","reitit.ring.coercion/gen","request","respons","response]","ring","ring,","ring])","rout","router","runtim","s])","ship","shipped,","spec","spec/coercion}})))","spec])","specs.","st])","statu","submap","succeeds,","support","swagger:","thrown.","tool","tools.cor","tools.core/spec.","transform","un","under","understood","us","values.","via","wrap","x","y)}})}}]]","y]}","{200","{:bodi","{:handler","{:meta","{:middlewar","{:paramet","{:request","{:schema","{:statu","{:total","{:x"],"ring/compiling_middleware.html":["\"gener","\"pluggabl","#(respond","%))","%))))","'[reitit.ring.middlewar","(","(:request","([request","([request]","(and","(coerc","(compiled)","(def","(defn","(fn","(handler","(if","(let","(middleware/cr","(records,","(requir","(respons","(ring/get","50%","::coerc",":a",":coercion",":coercion)",":gen",":meta",":opts)]",":respons",":responses)",":result",":wrap.","=>",">","?wrap.","[coercer","[handler]","[method","[respons","[{:key","_]","`reitit.coercion.protocol/coercion`","access","actual","approaches,","below","better.","closur","code","code,","coerc","coercer","coercion","compil","creation","data","data,","decid","defin","demonstr","dynam","easi","easier","enabl","enforc","etc.)","exact","expect","extend","extens","extract","fast","faster","faster.","found","function","gen","handler","inform","instead","it?","itself","key","know","latter","less","link","local","lookup","match","meta","meta,","method","middlewar","middleware.","middleware/interceptor","middleware])","mount","mount.\"","much","naiv","nil.","normal","nothing.\"","opt","opts)]","opts]}","otherwis","pass","pluggabl","pre","processing.","provid","raise))))))","raise)))))))}))","raise]","read","reason","reasoning:","record","reitit.ring.coercion:","relev","request","request)","request)))","request.","requir","respond","respons","response))","response)))","responses)","return","ring","role","rout","router","runtim","shape","still,","system.","time.","to,","transform","two","type","us","via","want,","way","wrap","wrap.","written","yield","{:name"],"performance.html":["\"/auth/login\")))","\"/workspace/1/1\")))","&","'[criterium.cor","'[reitit.cor","(ataraxy,","(cc/quick","(def","(dotim","(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."]},"length":19},"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":{},".":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},",":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"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.0028089887640449437}}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}},"}":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"]":{"docs":{},"]":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"2":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"docs":{}}},"4":{"0":{"3":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}},"4":{"docs":{},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"docs":{}},"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}}},"+":{"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.011235955056179775}}},"1":{"2":{"3":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"docs":{}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"4":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}}},"docs":{}}},"1":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}},".":{"9":{"docs":{},".":{"0":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"6":{"6":{"0":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{},"}":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},",":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"}":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"2":{"docs":{},"\"":{"docs":{},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}},"}":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0028089887640449437}}},"}":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"docs":{}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"b":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{},"}":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}}}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"#":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"{":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.014044943820224719},"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.0028089887640449437}}}}}},":":{"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.0028089887640449437}}}}}}}}}}}}}}}},".":{"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.0028089887640449437},"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.0028089887640449437}}}}}}}},"{":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}},"d":{"docs":{},"b":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.01020408163265306}}}}}}}}}},"'":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"{":{"docs":{},":":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"&":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},"'":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},"(":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},":":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"i":{"docs":{},"d":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"a":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"x":{"docs":{},"y":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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":{"./":{"ref":"./","tf":0.0028089887640449437}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"*":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.011467889908256881}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}},"o":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"n":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"f":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"o":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"j":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0070921985815602835}}}}}}}}}},"m":{"docs":{},"p":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}}}}}},"q":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"a":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}},"c":{"docs":{},"/":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"n":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224}}}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}}},"f":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.012084592145015106}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}}}}}},"r":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.025280898876404494},"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.0028089887640449437},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.014492753623188406},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}},"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.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"r":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.006042296072507553}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"e":{"docs":{},"t":{"docs":{},"!":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"/":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"?":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}},"q":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}}}}}}}}}}}}},"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.008849557522123894}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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.008849557522123894}}}}},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}}}}},"+":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"a":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.016853932584269662}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0028089887640449437}}}},"]":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"}":{"docs":{"./":{"ref":"./","tf":0.008426966292134831}},"]":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},"]":{"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.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"s":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"k":{"docs":{},"i":{"docs":{},"k":{"docs":{},"k":{"docs":{},"a":{"docs":{},")":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}}}}},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"3":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"y":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}},"p":{"docs":{},"i":{"docs":{},"]":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},"}":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},")":{"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.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01729106628242075}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.012084592145015106}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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}},")":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.016853932584269662},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}}}}},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"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.016853932584269662},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.014044943820224719},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"h":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},")":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"t":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0028089887640449437},"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.016853932584269662},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.016055045871559634}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0389908256880734}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505}},"e":{"docs":{},"r":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"}":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"}":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"]":{"docs":{},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"]":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},"docs":{}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"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.0030211480362537764}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.01020408163265306}}}}}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.013761467889908258}}}}}},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"u":{"docs":{},"p":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"e":{"docs":{},"v":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"e":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},"]":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},")":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},";":{"docs":{"./":{"ref":"./","tf":0.11235955056179775},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.029585798816568046},"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.075},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.13043478260869565},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.10135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.17391304347826086},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.2545871559633027},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},";":{"docs":{"performance.html":{"ref":"performance.html","tf":0.028169014084507043}}}},">":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.057971014492753624},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266},"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}},"p":{"docs":{},"i":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}}}}}}},":":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"/":{"docs":{},":":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.013513513513513514}},"]":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},"*":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"\"":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"\"":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"v":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},":":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"\"":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{},"/":{"docs":{},":":{"docs":{},"b":{"docs":{},"u":{"docs":{},"l":{"docs":{},"k":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},":":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}},"\"":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437}}}}}}}}}}}}}}}}}}}},"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.0056179775280898875},"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.0028089887640449437},"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.0028089887640449437},"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.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.011235955056179775}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0070921985815602835}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}},":":{"docs":{},":":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"]":{"docs":{},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"}":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"p":{"docs":{},"i":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757}},"}":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"c":{"docs":{},"c":{"docs":{},"]":{"docs":{},"}":{"docs":{},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0070921985815602835}}}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"p":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"s":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}},"d":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.02654867256637168}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575}}}}}}}},"]":{"docs":{},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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":{},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"j":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"p":{"docs":{},"h":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{},"(":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"{":{"docs":{},"{":{"docs":{},":":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"2":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"a":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"d":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"advanced/":{"ref":"advanced/","tf":10.142857142857142}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"p":{"docs":{},"p":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"l":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},"c":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"r":{"docs":{},"o":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"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.02127659574468085},"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.0030211480362537764}}}}}}},"r":{"docs":{},"g":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.01020408163265306}},"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.01020408163265306},"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}}},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567}}}}},"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.0070921985815602835}},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0028089887640449437},"basics/":{"ref":"basics/","tf":0.14285714285714285},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.358333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3405797101449273},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437}},"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}}}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"performance.html":{"ref":"performance.html","tf":0.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}}}},"e":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"s":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}},"/":{"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},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"t":{"docs":{},"a":{"2":{"docs":{},"\"":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"docs":{}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},",":{"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}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},".":{"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.0070921985815602835}}}}},"b":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"s":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"t":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}},"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.0028089887640449437},"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},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}}}},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"?":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}}}},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}},"s":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"o":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.023054755043228},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.03625377643504532}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"]":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.02416918429003021}}}}}}},"m":{"docs":{},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.015105740181269},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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.0028089887640449437},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.036231884057971},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"performance.html":{"ref":"performance.html","tf":0.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.01020408163265306}}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}}}}},"i":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"j":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"s":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},",":{"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.035398230088495575},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"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.0030211480362537764},"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}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}},"c":{"docs":{},"]":{"docs":{},")":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"./":{"ref":"./","tf":0.011235955056179775},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.030405405405405},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.3602794411177643},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}},":":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"docs":{},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"i":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"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.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"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.0030211480362537764}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"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.0028089887640449437}}}}}},"s":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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.008426966292134831},"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.0028089887640449437},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.00709219858156},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"o":{"docs":{"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}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"'":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"b":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}},"e":{"docs":{},"x":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}},"s":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":5.01418439716312},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"r":{"docs":{},"n":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.02027027027027027},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.00906344410876133}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"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.014184397163120567},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"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}}}}},"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.01020408163265306},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},".":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},".":{"docs":{},"g":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0030211480362537764}}}}}},"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.0028089887640449437},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},"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},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.0028089887640449437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"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}}}}}}}}},"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.017699115044247787},"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}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.011235955056179775},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.03651685393258427},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}},")":{"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.01020408163265306}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},":":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}}},"]":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},")":{"docs":{},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}},")":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},"]":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},".":{"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.0070921985815602835}}},"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":{"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.0028089887640449437},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},")":{"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.0028089887640449437},"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.0028089887640449437}}}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}},"\"":{"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":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},")":{"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}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"./":{"ref":"./","tf":10.002808988764045}}}}}}}},"?":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"}":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}},"r":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"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.00906344410876133}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}}}}},"i":{"docs":{},"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.02040816326530612}}}}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}}}}}}},"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.0030211480362537764}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0028089887640449437},"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.0030211480362537764}}}},"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.0030211480362537764}}}}},"o":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},"o":{"docs":{},"k":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764},"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.0030211480362537764}}}}},"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.0030211480362537764}}}}}},"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.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"?":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}},"s":{"docs":{},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"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},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"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":{},"a":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.04081632653061224},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},",":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},".":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},"s":{"docs":{},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"g":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0056179775280898875},"ring/":{"ref":"ring/","tf":0.16666666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":0.025280898876404494},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":3.393213572854291},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":5.018126888217522},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"e":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.006042296072507553}}},"]":{"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.0030211480362537764}}}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}},"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":{},"r":{"docs":{},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.00528169014084507}},".":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}},"d":{"docs":{},"e":{"docs":{},"?":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},".":{"docs":{},"\"":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"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.00906344410876133},"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.016853932584269662},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":0.05309734513274336},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.3840579710144922},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}},"]":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"!":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"s":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"i":{"docs":{},"v":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.025280898876404494},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.008426966292134831}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.014492753623188406}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},":":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},".":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}},"e":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}},"w":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"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},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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.0030211480362537764}}}}}}}},".":{"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.006042296072507553}}}}}}},"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.04081632653061224},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/router.html":{"ref":"basics/router.html","tf":0.035398230088495575},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}},"s":{"docs":{},".":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"m":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"performance.html":{"ref":"performance.html","tf":0.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.00906344410876133}}}},"]":{"docs":{},"}":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375},"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.01020408163265306}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"performance.html":{"ref":"performance.html","tf":0.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.006042296072507553}}}}}}}}},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":5.025936599423631}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"s":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},".":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"s":{"docs":{},"]":{"docs":{},")":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}}}}}},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}},"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.008426966292134831},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.023668639053254437},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.433333333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.01056338028169014}},"]":{"docs":{},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},")":{"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.006042296072507553}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"g":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"e":{"docs":{},"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.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},")":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},".":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"s":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}}}}}},"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.0030211480362537764}},"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.0070921985815602835}}}}}},"r":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}}},"l":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}}}}},"o":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"r":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}}},"r":{"docs":{},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"e":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},",":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}},")":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}}}}}}},"/":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}}}}}}},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.019662921348314606},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.014184397163120567},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.027190332326283987},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.015105740181268883}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"}":{"docs":{},"]":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"i":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.02040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"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.01020408163265306},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.020172910662824207},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.045317220543806644}},"e":{"docs":{},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"s":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.00906344410876133}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.025},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},",":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}}},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.017964071856287425},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"a":{"docs":{},"d":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}},"m":{"docs":{},"e":{"docs":{},":":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0030211480362537764}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.011235955056179775},"ring/":{"ref":"ring/","tf":10.166666666666666},"ring/ring.html":{"ref":"ring/ring.html","tf":5.019662921348314},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0035211267605633804}},"]":{"docs":{},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.016853932584269662},"basics/":{"ref":"basics/","tf":0.35714285714285715},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.0828402366863905},"basics/router.html":{"ref":"basics/router.html","tf":0.061946902654867256},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":3.370833333333333},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":3.369565217391304},"basics/route_data.html":{"ref":"basics/route_data.html","tf":5.050675675675675},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":5.043478260869565},"advanced/":{"ref":"advanced/","tf":0.14285714285714285},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.11224489795918367},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.044444444444444446},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.032110091743119},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.020958083832335328},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.030211480362537766},"performance.html":{"ref":"performance.html","tf":0.0528169014084507}},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.03932584269662921},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/router.html":{"ref":"basics/router.html","tf":10.079646017699115},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.05},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.050724637681159424},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.037162162162162164},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.028985507246376812},"advanced/":{"ref":"advanced/","tf":0.2857142857142857},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":5.040816326530612},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":5.111111111111111},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/":{"ref":"ring/","tf":0.08333333333333333},"ring/ring.html":{"ref":"ring/ring.html","tf":5.008426966292135},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.008802816901408451}},")":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875}},".":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},",":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"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.02127659574468085}}},"s":{"docs":{},".":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815}}},":":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.021739130434782608},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},",":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},",":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}},".":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0028089887640449437}}},":":{"docs":{"./":{"ref":"./","tf":0.011235955056179775},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},",":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},")":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125}}}}}}}},"o":{"docs":{},"t":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}},":":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}},"]":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}}}}}}},"a":{"docs":{},"w":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},")":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}}}}},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.008982035928143712},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},"c":{"1":{"docs":{},"\"":{"docs":{},"]":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"docs":{}}},"s":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}},"a":{"docs":{},"l":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}},"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}},",":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}},"]":{"docs":{},")":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}},"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}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},"r":{"docs":{},"v":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"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.01020408163265306}}}},"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.0028089887640449437}}}}}},"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.0028089887640449437},"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.011235955056179775}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}},":":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.009174311926605505},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"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.008426966292134831},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"e":{"docs":{},"r":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}}}},"b":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/":{"ref":"basics/","tf":0.07142857142857142},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":5.005917159763314}}}}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"performance.html":{"ref":"performance.html","tf":0.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.008849557522123894},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525}}}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}},")":{"docs":{},"}":{"docs":{},")":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}},"e":{"docs":{},"p":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"s":{"docs":{},"t":{"docs":{},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408},"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"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},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{"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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}},"a":{"docs":{},"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}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}},"n":{"docs":{},"d":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},"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.0030211480362537764}}}}}},"/":{"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}}}}}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0045871559633027525},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}},"w":{"docs":{},"a":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}},":":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"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.008849557522123894},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},":":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}},"s":{"docs":{},",":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"performance.html":{"ref":"performance.html","tf":0.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/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}}},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"s":{"docs":{},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}},"]":{"docs":{},")":{"docs":{},"]":{"docs":{},")":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}}}}}}}},".":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}},")":{"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.0030211480362537764}}},"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.0030211480362537764},"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/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"performance.html":{"ref":"performance.html","tf":0.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.01020408163265306}},"n":{"docs":{},":":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}},"e":{"docs":{},"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.01020408163265306},"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.006042296072507553}}},",":{"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}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"performance.html":{"ref":"performance.html","tf":0.02464788732394366}},"s":{"docs":{},",":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}}},"u":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.0028089887640449437},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136},"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.022222222222222223},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.006880733944954129},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.007042253521126761}},"e":{"docs":{},"r":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}},"\"":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}}}},"d":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}},":":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0028089887640449437},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.023054755043227664},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.01812688821752266}},"}":{"docs":{},")":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.0030211480362537764}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.014814814814814815},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"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.0030211480362537764}}}}},"y":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}},"{":{"2":{"0":{"0":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"docs":{}},"docs":{}},"docs":{},":":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"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.0028089887640449437},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.006756756756756757},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.008426966292134831},"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.008426966292134831},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.01775147928994083},"ring/ring.html":{"ref":"ring/ring.html","tf":0.011235955056179775},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.014044943820224719},"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219},"basics/router.html":{"ref":"basics/router.html","tf":0.017699115044247787},"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.021739130434782608},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.016853932584269662},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.02127659574468085},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.016891891891891893}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"ring/ring.html":{"ref":"ring/ring.html","tf":0.02247191011235955},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.03546099290780142},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.005988023952095809},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.011527377521613832}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.011834319526627219}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"basics/route_conflicts.html":{"ref":"basics/route_conflicts.html","tf":0.007246376811594203}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"ring/ring.html":{"ref":"ring/ring.html","tf":0.0028089887640449437}}}}},":":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835}}}}}}},"b":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}},"t":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.01440922190201729}}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.008645533141210375}}}},"}":{"docs":{"./":{"ref":"./","tf":0.0056179775280898875},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.010135135135135136}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306}}}}}}},"=":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609}},">":{"docs":{"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.05102040816326531},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.011976047904191617},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"e":{"docs":{},"r":{"docs":{"basics/route_syntax.html":{"ref":"basics/route_syntax.html","tf":0.005917159763313609},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}},"t":{"docs":{"basics/router.html":{"ref":"basics/router.html","tf":0.008849557522123894}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"basics/path_based_routing.html":{"ref":"basics/path_based_routing.html","tf":0.0125},"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.02127659574468085}}}}}},"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},"advanced/configuring_routers.html":{"ref":"advanced/configuring_routers.html","tf":0.01020408163265306},"ring/ring.html":{"ref":"ring/ring.html","tf":0.0056179775280898875},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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.01020408163265306},"ring/dynamic_extensions.html":{"ref":"ring/dynamic_extensions.html","tf":0.0070921985815602835},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}},"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.01020408163265306},"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.02962962962962963},"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":5.004587155963303},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}},":":{"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":{},"s":{"docs":{},".":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}}}}}}}}},"/":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{},":":{"docs":{"basics/name_based_routing.html":{"ref":"basics/name_based_routing.html","tf":0.007246376811594203}}}}}}}}}}},"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.01020408163265306},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.014970059880239521},"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.002881844380403458},"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"basics/route_data.html":{"ref":"basics/route_data.html","tf":0.0033783783783783786},"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.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}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{"advanced/different_routers.html":{"ref":"advanced/different_routers.html","tf":0.007407407407407408}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}},".":{"docs":{"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.0030211480362537764}},")":{"docs":{},")":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}},"]":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}},"`":{"docs":{},"r":{"docs":{},"e":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"advanced/route_validation.html":{"ref":"advanced/route_validation.html","tf":0.0022935779816513763}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"`":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.006042296072507553}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"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.0030211480362537764}}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}}},"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.0030211480362537764},"performance.html":{"ref":"performance.html","tf":0.0017605633802816902}}}}}},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},")":{"docs":{},"}":{"docs":{},"}":{"docs":{},"]":{"docs":{},"]":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}}}}}}},"]":{"docs":{},"}":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ring/data_driven_middleware.html":{"ref":"ring/data_driven_middleware.html","tf":0.0029940119760479044}}}}}},"x":{"docs":{"ring/parameter_coercion.html":{"ref":"ring/parameter_coercion.html","tf":0.005763688760806916}}},"_":{"docs":{},"]":{"docs":{"ring/compiling_middleware.html":{"ref":"ring/compiling_middleware.html","tf":0.0030211480362537764}}}},")":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{"performance.html":{"ref":"performance.html","tf":0.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":2252},"corpusTokens":["\"/\"","\"/\"))","\"/\")))","\"/\"))))","\"/api/admin/db\"})","\"/api/admin/ping\",","\"/api/admin/ping\"})","\"/api/admin/users\"})","\"/api/ipa\")","\"/api/orders/1\")","\"/api/orders/1\"}","\"/api/orders/2\"}","\"/api/orders/:id\"","\"/api/orders/:id\",","\"/api/ping\"","\"/api/ping\")","\"/api/ping\"}","\"/api/ping\"})","\"/api/user/1\"","\"/api/user/1\")","\"/api/user/:id\"","\"/api/user/:id\",","\"/auth/login\")))","\"/favicon.ico\"})","\"/hello\")","\"/invalid\"})","\"/ping\"","\"/ping\")","\"/ping\"}","\"/ping\"})","\"/workspace/1/1\")))","\"0.1.0","\"0.1.123\"]","\"0.3.0\"]","\"0.4.0\"]","\"1\"}","\"1\"})","\"1\"}}","\"1.9.0","\"1.9.660\"]","\"everyth","\"forbidden\"}","\"gener","\"middlewar","\"ok\",","\"ok\"}","\"ok\"})","\"ok\"}))","\"pluggabl","\"tenant1\"","#'reitit.core/rout","#(respond","#endpoint{:meta","#match{:templ","#methods{...}","#methods{:ani","#object[...],","#object[...]}","#object[...]},","#object[user$handler]}","#partialmatch{:templ","#reitit","#{:admin}","#{:admin}}","#{:admin}})","#{:db","#{:id}","#{:id}}","#{:session}","#{:user}","#{route}}","%","%)","%))","%))))","&","'())","'[clojure.set","'[clojure.spec.alpha","'[clojure.spec.test.alpha","'[criterium.cor","'[expound.alpha","'[reitit.cor","'[reitit.r","'[reitit.ring.coercion","'[reitit.ring.coercion.spec","'[reitit.ring.middlewar","'[reitit.spec","'[reitit.spec])","'[spec","'add","'get","(","(*","(*path).","(+","(:api","(:id)","(:request","(?","([\"/api\"","([\"/get","([...","([request","([request]","(a","(and","(app","(ataraxy,","(blank?","(cat","(cc/quick","(clojure.core/fn","(clojure.core/or","(clojure.spec)","(clojure.spec),","(clojure.spec.alpha/*","(clojure.spec.alpha/?","(clojure.spec.alpha/and","(clojure.spec.alpha/cat","(clojure.spec.alpha/col","(clojure.spec.alpha/nil","(clojure.spec.alpha/or","(clojure.string/blank?","(clojure.string/start","(coerc","(comp","(compiled)","(condp","(conj","(constantli","(cqr","(def","(default","(defn","(defprotocol","(dotim","(duct/integrant/macchiato","(effect","(figwheel","(fn","(fnil","(for","(handler","(if","(just","(let","(match","(matches,","(micro","(middleware/cr","(name","(nilabl","(non","(not","(of","(onli","(option","(optional)","(or","(per","(r/match","(r/partial","(r/rout","(r/router","(real","(recommend","(records,","(reitit/match","(reitit/routes))","(requir","(respons","(reverse)","(ring/get","(ring/r","(ring/rout","(rout","(router","(s/def","(s/explain","(s/key","(s/valid?","(seq","(set!","(set/subset?","(some","(st/spec","(start","(static","(stest/instru","(str","(updat","(via","(which","(wildcard",")benchmark","...","...])","/","/:user","/:version/statu","/api/command/add","/api/user/:id:","/bulk/:bulk","/public/*path","1","1,","1.8","1.9.0","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","403,","404}","404})))","50%","50+","500x","530","6",":","::acc","::admin]","::admin}]","::coerc","::db]","::db]]","::db]}","::db}]","::dev","::i","::ipa)","::kikka)","::order","::ping","::ping)","::ping))","::ping]","::ping]]","::ping}","::ping}]","::ping}]]","::pong}]]","::request","::request}","::respons","::response}}","::role","::roles)]","::spec/raw","::tenant1])","::total","::user","::user)","::user))","::user]]]))","::users]","::users]]))","::users}","::wrap2","::wrap3","::x","::y]))",":a",":admin",":admin]]}",":admin}",":api)]}",":api]]",":api]]}",":append,",":arg",":auth/login]",":auth/recovery]",":bodi",":body,",":body}",":child",":clojure.spec.alpha/spec",":clojure.spec.alpha/valu",":coerc",":coercion",":coercion)",":command",":compil",":conflict",":db",":db]]",":default",":delet",":delete,",":delete]]",":descript",":dev",":displac",":expand",":form,",":gen",":get",":get,",":handler",":handler)})",":handler]}",":head,",":header",":into",":let",":linear",":lookup",":meta",":middlewar",":mix",":name",":options,",":opts)]",":param",":paramet",":parameters.",":parameters}]",":patch,",":path",":path)",":path.",":path]",":post",":post)]]",":prefix",":prepend,",":provides.",":put,",":put.",":queri",":query,",":reitit.spec/arg)",":reitit.spec/path",":reitit.spec/path:",":reitit.spec/raw",":replac",":req",":request",":requir",":respons",":responses)",":result",":role",":rout",":router",":schema",":singl",":uri",":user/ord",":user/ping}",":user/ping}]",":user/tenant1",":user/tenant1]",":user/user]",":user/user}",":user/user},",":user/user}]]",":workspace/page]]))",":wrap",":wrap.",":y",";",";;","=","=>",">","?arg","?wrap.","[\"\"","[\"/:user","[\"/:version/status\"]])","[\"/add","[\"/admin\"","[\"/api\"","[\"/api/:users\"","[\"/api/:version/ping\"]]","[\"/api/admin/db\"","[\"/api/admin/users\"","[\"/api/orders/:id\"","[\"/api/ping\"","[\"/api/user/:id\"","[\"/auth/recovery/token/:token\"","[\"/bulk/:bulk","[\"/db\"","[\"/dev","[\"/ping\"","[\"/ping\"]","[\"/pong\"","[\"/pong\"]]","[\"/public\"","[\"/public/*path\"]","[\"/user/:id\"","[\"/users\"","[\"/workspace/:project/:page\"","[\"pong\"]]])","[\"tenant1\"","[#(wrap","[%]","[...","[0]","[1","[1]","[::acc]}]","[::admin],","[::admin]}","[::api","[::api]","[::api]}","[::db]","[::roles]","[::total]))","[::x","[:api","[:command","[:rout","[:routes]","[:user/p","[[\"/api\"","[[\"/api/admin\"","[[\"/api/ping\"","[[\"/auth/login\"","[[\"/ping\"","[[\"/ping\"]","[[\"/users/:us","[[#object[user$wrap]","[[:queri","[[type","[[wrap","[[wrap3","[])","[]))","[]}}]]","[_","[_]","[action","[add","[clojur","[coercer","[coercion/gen","[expound","[get","[handler","[handler]","[interceptor]}}])","[method","[metosin/reitit","[metosin/spec","[org.clojure/clojur","[org.clojure/clojurescript","[org.clojure/spec.alpha","[path","[request]","[requir","[respons","[thi","[this])","[wrap","[wrap2","[x","[{:key","[{{{:key","^:replac","^^^^^^","_]","`lein","`reitit.coercion.protocol/coercion`","`reitit/router)","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.","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","beta2\"]","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","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:","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","ensur","entri","environment.","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","extract","fail","fails,","fallback","fals","false)","fast","fast),","fast,","fast.","faster","faster.","fastest","featur","few","first","fix","flatten","flattened:","fn","follow","following:","form","format","found","found,","found.","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","implemen","implement","implementation.","in:","infinit","info","inform","information:","initi","inject","injectuserintorequestmiddlewar","inlin","inspect","instanc","instead","instrument","int?)","int?))","int?,","int?}}","int?}}}","intel","interceptor","interceptor)","interceptor))","interceptor]","interest","intern","interpet","introduc","introduct","inventories,","invok","issu","it'","it?","itself","jvm","kb","key","key,","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","meta,","method","method.","methods.","mid","middlewar","middleware)","middleware,","middleware.","middleware/interceptor","middleware:","middleware])","mind.","miss","mix","mode?","mode?]","model","more","more.","mount","mount.\"","move","much","multimethod","multipl","mutabl","naiv","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.","opts)]","opts]}","order","order\"","order.","order]]","order]}}])","origin","otherwis","out","out*","over","overrid","overridden","param","paramet","parameter:","parameters.","parameters/gen","parameters:","params]))","part","partial","partialmatch","partialmatch,","pass","path","path)","path.","path])","pedest","pedestal).","pedestal.","penalty.","perf","perf.","perform","performance,","performance.","performance:","pleas","pluggabl","po","port","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:","provid","public","pull","purpose:","qualifi","queri","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.spec/speccoercion","reitit.ring.coercion/gen","reitit.ring.coercion:","reitit.ring.middleware/intomiddlewar","reitit.ring.middleware/middlewar","reitit.ring/get","reitit.ring/rout","reitit.spec","reitit/conflict","reitit/expand","relev","repl","repl`","repo","request","request)","request)))","request)))))","request.","request}]","requir","required)","resolut","resolv","respond","respons","response))","response)))","response.","response]","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/key","s])","same","sampl","satisfi","scenario","scene","scientif","second","see","select","separ","separately:","sequenti","sequential)","serv","set","set,","set])","setup:","sever","shape","shine","ship","shipped,","show","side","simpl","singl","site","size","slack.","slow,","slower","slowest","small","snapshot\"]","so,","someth","sound","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","tests,","thank","them.","thing","things.\"","third","three","throw","thrown.","thrown:","thu","time","time,","time.","tip","to,","to:","todo","togeth","too).","too.","tool","tools\"","tools.cor","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","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","{:get","{:handler","{:id","{:interceptor","{:meta","{:middlewar","{:name","{:paramet","{:post","{:request","{:role","{:schema","{:statu","{:total","{: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 meta-data\nBi-directional routing\nPluggable coercion (clojure.spec)\nsupports both Middleware & Interceptors\nExtendable\nFast\n\nTo use Reitit, add the following dependecy to your project:\n[metosin/reitit \"0.1.0-SNAPSHOT\"]\n\nOptionally, the parts can be required separately:\n[metosin/reitit-core \"0.1.0-SNAPSHOT\"] ; just the router\n[metosin/reitit-ring \"0.1.0-SNAPSHOT\"] ; ring-router\n[metosin/reitit-spec \"0.1.0-SNAPSHOT\"] ; spec-coercion\n\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; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-path router \"/api/orders/1\")\n; #Match{:template \"/api/orders/:id\"\n; :meta {:name ::order-by-id}\n; :result nil\n; :params {:id \"1\"}\n; :path \"/api/orders/1\"}\n\nReverse-routing:\n(r/match-by-name router ::ipa)\n; nil\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name ::ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\n(r/match-by-name router ::order-by-id)\n; #PartialMatch{:template \"/api/orders/:id\"\n; :meta {:name :user/order-by-id}\n; :result nil\n; :params nil\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::order-by-id))\n; true\n\n(r/match-by-name router ::order-by-id {:id 2})\n; #Match{:template \"/api/orders/:id\",\n; :meta {:name ::order-by-id},\n; :result nil,\n; :params {:id 2},\n; :path \"/api/orders/2\"}\n\nRing-router\nRing-router adds support for :handler functions, :middleware and routing based on :request-method. It also supports pluggable parameter coercion (clojure.spec), data-driven middleware, route and middleware compilation, dynamic extensions and more.\n(require '[reitit.ring :as ring])\n\n(def handler [_]\n {:status 200, :body \"ok\"})\n\n(defn wrap [handler id]\n (fn [request]\n (update (handler request) :wrap (fnil conj '()) id)))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [[wrap :api]]}\n [\"/ping\" {:get handler\n :name ::ping}]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/users\" {:get handler\n :post handler}]]])))\n\nRouting:\n(app {:request-method :get, :uri \"/api/admin/users\"})\n; {:status 200, :body \"ok\", :wrap (:api :admin}\n\n(app {:request-method :put, :uri \"/api/admin/users\"})\n; nil\n\nReverse-routing:\n(require '[reitit.core :as r])\n\n(-> app (ring/get-router) (r/match-by-name ::ping))\n; #Match{:template \"/api/ping\"\n; :meta {:middleware [[#object[user$wrap] :api]]\n; :get {:handler #object[user$handler]}\n; :name ::ping}\n; :result #Methods{...}\n; :params nil\n; :path \"/api/ping\"}\n\n"},"basics/":{"url":"basics/","title":"Basics","keywords":"","body":"Basics\n\nRoute syntax\nRouter\nPath-based Routing\nName-based Routing\nRoute data\nRoute conflicts\n\n"},"basics/route_syntax.html":{"url":"basics/route_syntax.html","title":"Route syntax","keywords":"","body":"Route Syntax\nRoutes are defined as vectors of String path and optional (non-sequential) route argument child routes.\nRoutes can be wrapped in vectors and lists and nil routes are ignored.\nPaths can have path-parameters (:id) or catch-all-parameters (*path).\nExamples\nSimple route:\n[\"/ping\"]\n\nTwo routes:\n[[\"/ping\"]\n [\"/pong\"]]\n\nRoutes with route arguments:\n[[\"/ping\" ::ping]\n [\"/pong\" {:name ::pong}]]\n\nRoutes with path parameters:\n[[\"/users/:user-id\"]\n [\"/api/:version/ping\"]]\n\nRoute with catch-all parameter:\n[\"/public/*path\"]\n\nNested routes:\n[\"/api\"\n [\"/admin\" {:middleware [::admin]}\n [\"\" ::admin]\n [\"/db\" ::db]]\n [\"/ping\" ::ping]]\n\nSame routes flattened:\n[[\"/api/admin\" {:middleware [::admin], :name ::admin}]\n [\"/api/admin/db\" {:middleware [::admin], :name ::db}]\n [\"/api/ping\" {:name ::ping}]]\n\nGenerating routes\nAs routes are just data, it's easy to create them programmatically:\n(defn cqrs-routes [actions dev-mode?]\n [\"/api\" {:interceptors [::api ::db]}\n (for [[type interceptor] actions\n :let [path (str \"/\" (name interceptor))\n method (condp = type\n :query :get\n :command :post)]]\n [path {method {:interceptors [interceptor]}}])\n (if dev-mode? [\"/dev-tools\" ::dev-tools])])\n\n(cqrs-routes\n [[:query 'get-user]\n [:command 'add-user]\n [:command 'add-order]]\n false)\n; [\"/api\" {:interceptors [::api ::db]}\n; ([\"/get-user\" {:get {:interceptors [get-user]}}]\n; [\"/add-user\" {:post {:interceptors [add-user]}}]\n; [\"/add-order\" {:post {:interceptors [add-order]}}])\n; nil]\n\n"},"basics/router.html":{"url":"basics/router.html","title":"Router","keywords":"","body":"Router\nRoutes are just data and for routing, we need a router instance satisfying the reitit.core/Router protocol. Routers are created with reitit.core/router function, taking the raw routes and optionally an options map.\nThe Router protocol:\n(defprotocol Router\n (router-name [this])\n (routes [this])\n (options [this])\n (route-names [this])\n (match-by-path [this path])\n (match-by-name [this name] [this name params]))\n\nCreating a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nName of the created router:\n(r/router-name router)\n; :mixed-router\n\nThe flattened route tree:\n(r/routes router)\n; [[\"/api/ping\" {:name :user/ping}]\n; [\"/api/user/:id\" {:name :user/user}]]\n\nBehind the scenes\nWhen router is created, the following steps are done:\n\nroute tree is flattened\nroute arguments are expanded (via reitit.core/Expand protocol) and optionally coerced\nroute conflicts are resolved\nactual router implementation is selected and created\noptionally route meta-data gets compiled\n\n"},"basics/path_based_routing.html":{"url":"basics/path_based_routing.html","title":"Path-based Routing","keywords":"","body":"Path-based routing\nPath-based routing is done using the reitit.core/match-by-path function. It takes the router and path as arguments and returns one of the following:\n\nnil, no match\nPartialMatch, path matched, missing path-parameters (only in reverse-routing)\nMatch, exact match\n\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nNo match returns nil:\n(r/match-by-path router \"/hello\")\n; nil\n\nMatch provides the route information:\n(r/match-by-path router \"/api/user/1\")\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\n"},"basics/name_based_routing.html":{"url":"basics/name_based_routing.html","title":"Name-based Routing","keywords":"","body":"Name-based (reverse) routing\nAll routes which have :name route data defined, can also be matched by name.\nGiven a router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/api\"\n [\"/ping\" ::ping]\n [\"/user/:id\" ::user]]]))\n\nListing all route names:\n(r/route-names router)\n; [:user/ping :user/user]\n\nNo match returns nil:\n(r/match-by-name router ::kikka)\nnil\n\nMatching a route:\n(r/match-by-name router ::ping)\n; #Match{:template \"/api/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/api/ping\"}\n\nIf not all path-parameters are set, a PartialMatch is returned:\n(r/match-by-name router ::user)\n; #PartialMatch{:template \"/api/user/:id\",\n; :meta {:name :user/user},\n; :result nil,\n; :params nil,\n; :required #{:id}}\n\n(r/partial-match? (r/match-by-name router ::user))\n; true\n\nWith provided path-parameters:\n(r/match-by-name router ::user {:id \"1\"})\n; #Match{:template \"/api/user/:id\"\n; :meta {:name :user/user}\n; :path \"/api/user/1\"\n; :result nil\n; :params {:id \"1\"}}\n\nThere is also a exception throwing version:\n(r/match-by-name! router ::user)\n; ExceptionInfo missing path-params for route /api/user/:id: #{:id}\n\n"},"basics/route_data.html":{"url":"basics/route_data.html","title":"Route data","keywords":"","body":"Route data\nRoute data is the heart of this library. Routes can have any data attachted to them. Data is interpeted either by the client application or the Router via it's :coerce and :compile hooks. This enables co-existence of both adaptive and principled components.\nRoutes can have a non-sequential route argument that is expanded into route data map when a router is created.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\nThe expanded route data can be retrieved from a router with routes and is returned with match-by-path and match-by-name in case of a route match.\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n(r/match-by-name router ::ping)\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\nNested route data\nFor nested route trees, route data is accumulated recursively from root towards leafs using meta-merge. Default behavior for colections is :append, but this can be overridden to :prepend, :replace or :displace using the target meta-data.\nAn example router with nested data:\n(def router\n (r/router\n [\"/api\" {:interceptors [::api]}\n [\"/ping\" ::ping]\n [\"/admin\" {:roles #{:admin}}\n [\"/users\" ::users]\n [\"/db\" {:interceptors [::db]\n :roles ^:replace #{:db-admin}}]]]))\n\nResolved route tree:\n(r/routes router)\n; [[\"/api/ping\" {:interceptors [::api]\n; :name :user/ping}]\n; [\"/api/admin/users\" {:interceptors [::api]\n; :roles #{:admin}\n; :name ::users} nil]\n; [\"/api/admin/db\" {:interceptors [::api ::db]\n; :roles #{:db-admin}}]]\n\nExpansion\nBy default, reitit/Expand protocol is used to expand the route arguments. It expands keywords into :name and functions into :handler key in the route data map. It's easy to add custom expanders and one can chenge the whole expand implementation via router options.\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/pong\" identity]\n [\"/users\" {:get {:roles #{:admin}\n :handler identity}}]]))\n\n(r/routes router)\n; [[\"/ping\" {:name :user/ping}]\n; [\"/pong\" {:handler identity]}\n; [\"/users\" {:get {:roles #{:admin}\n; :handler identity}}]]\n\n(r/match-by-path router \"/ping\")\n; #Match{:template \"/ping\"\n; :meta {:name :user/ping}\n; :result nil\n; :params {}\n; :path \"/ping\"}\n\n"},"basics/route_conflicts.html":{"url":"basics/route_conflicts.html","title":"Route conflicts","keywords":"","body":"Route conflicts\nMany routing libraries allow multiple matches for a single path lookup. Usually, the first match is used and the rest are effecively unreachanle. This is not good, especially if route tree is merged from multiple sources.\nReitit resolves this by running explicit conflicit resolution when a router is called. Conflicting routes are passed into a :conflicts callback. Default implementation throws ex-info with a descriptive message.\nExamples router with conflicting routes:\n(require '[reitit.core :as r])\n\n(def routes\n [[\"/ping\"]\n [\"/:user-id/orders\"]\n [\"/bulk/:bulk-id\"]\n [\"/public/*path\"]\n [\"/:version/status\"]])\n\nBy default, ExceptionInfo is thrown:\n(r/router routes)\n; CompilerException clojure.lang.ExceptionInfo: Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\nJust logging the conflicts:\n(r/router\n routes\n {:conflicts (comp println reitit/conflicts-str)})\n; Router contains conflicting routes:\n;\n; /:user-id/orders\n; -> /public/*path\n; -> /bulk/:bulk-id\n;\n; /bulk/:bulk-id\n; -> /:version/status\n;\n; /public/*path\n; -> /:version/status\n;\n\n"},"advanced/":{"url":"advanced/","title":"Advanced","keywords":"","body":"Advanced\n\nConfiguring routers\nDifferent Routers\nRoute Validation\n\n"},"advanced/configuring_routers.html":{"url":"advanced/configuring_routers.html","title":"Configuring routers","keywords":"","body":"Configuring Routers\nRouters can be configured via options. Options allow things like clojure.spec validation for meta-data and fast, compiled handlers. The following options are available for the reitit.core/router:\n\n\n\nkey\ndescription\n\n\n\n\n:path\nBase-path for routes\n\n\n:routes\nInitial resolved routes (default [])\n\n\n:meta\nInitial expanded route-meta vector (default [])\n\n\n:expand\nFunction of arg opts => meta to expand route arg to route meta-data (default reitit.core/expand)\n\n\n:coerce\nFunction of route opts => route to coerce resolved route, can throw or return nil\n\n\n:compile\nFunction of route opts => result to compile a route handler\n\n\n:conflicts\nFunction of {route #{route}} => side-effect to handle conflicting routes (default reitit.core/throw-on-conflicts!)\n\n\n:router\nFunction of routes opts => router to override the actual router implementation\n\n\n\n"},"advanced/different_routers.html":{"url":"advanced/different_routers.html","title":"Different Routers","keywords":"","body":"Different Routers\nReitit ships with several different implementations for the Router protocol, originally based on the Pedestal implementation. router function selects the most suitable implementation by inspecting the expanded routes. The implementation can be set manually using :router option, see configuring routers.\n\n\n\nrouter\ndescription\n\n\n\n\n:linear-router\nMatches the routes one-by-one starting from the top until a match is found. Works with any kind of routes. Slow, but works with all route trees.\n\n\n:lookup-router\nFast router, uses hash-lookup to resolve the route. Valid if no paths have path or catch-all parameters and there are no Route conflicts.\n\n\n:mixed-router\nCreates internally a :prefix-tree-router and a :lookup-router and used them to effectively get best-of-both-worlds. Valid only if there are no Route conflicts.\n\n\n:single-static-path-router\nSuper fast router: sting-matches the route. Valid only if there is one static route.\n\n\n:prefix-tree-router\nRouter that creates a prefix-tree out of an route table. Much faster than :linear-router. Valid only if there are no Route conflicts.\n\n\n\nThe router name can be asked from the router:\n(require '[reitit.core :as r])\n\n(def router\n (r/router\n [[\"/ping\" ::ping]\n [\"/api/:users\" ::users]]))\n\n(r/router-name router)\n; :mixed-router\n\n"},"advanced/route_validation.html":{"url":"advanced/route_validation.html","title":"Route Validation","keywords":"","body":"Route validation\nNamespace reitit.spec contains clojure.spec definitions for raw-routes, routes, router and router options.\nNOTE: Use of specs requires to use one of the following:\n\n[org.clojure/clojurescript \"1.9.660\"] (or higher)\n[org.clojure/clojure \"1.9.0-RC1\"] (or higher)\n[clojure-future-spec \"1.9.0-alpha17\"] (if Clojure 1.8 is used)\n\nExample\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec :as spec])\n\n(def routes-from-db\n [\"tenant1\" ::tenant1])\n\n(s/valid? ::spec/raw-routes routes-from-db)\n; false\n\n(s/explain ::spec/raw-routes routes-from-db)\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/path at: [:route :path] predicate: (or (blank? %) (starts-with? % \"/\"))\n; In: [0] val: \"tenant1\" fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; In: [1] val: :user/tenant1 fails spec: :reitit.spec/raw-route at: [:routes] predicate: (cat :path :reitit.spec/path :arg (? :reitit.spec/arg) :childs (* (and (nilable :reitit.spec/raw-route))))\n; :clojure.spec.alpha/spec :reitit.spec/raw-routes\n; :clojure.spec.alpha/value [\"tenant1\" :user/tenant1]\n\nAt development time\nreitit.core/router can be instrumented and use something like expound to pretty-print the spec problems.\nFirst add a :dev dependency to:\n[expound \"0.3.0\"] ; or higher\n\nSome bootstrapping:\n(require '[clojure.spec.test.alpha :as stest])\n(require '[expound.alpha :as expound])\n(require '[clojure.spec.alpha :as s])\n(require '[reitit.spec])\n\n(stest/instrument `reitit/router)\n(set! s/*explain-out* expound/printer)\n\nAnd we are ready to go:\n(require '[reitit.core :as r])\n\n(r/router\n [\"/api\"\n [\"/public\"\n [\"/ping\"]\n [\"pong\"]]])\n\n; CompilerException clojure.lang.ExceptionInfo: Call to #'reitit.core/router did not conform to spec:\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([\"/api\" ...])\n; ^^^^^^\n;\n; should satisfy\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; or\n;\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -- Spec failed --------------------\n;\n; Function arguments\n;\n; ([... [... ... [\"pong\"]]])\n; ^^^^^^\n;\n; should satisfy\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; or\n;\n; (fn\n; [%]\n; (or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\")))\n;\n; -- Relevant specs -------\n;\n; :reitit.spec/path:\n; (clojure.spec.alpha/and\n; clojure.core/string?\n; (clojure.core/fn\n; [%]\n; (clojure.core/or\n; (clojure.string/blank? %)\n; (clojure.string/starts-with? % \"/\"))))\n; :reitit.spec/raw-route:\n; (clojure.spec.alpha/cat\n; :path\n; :reitit.spec/path\n; :arg\n; (clojure.spec.alpha/? :reitit.spec/arg)\n; :childs\n; (clojure.spec.alpha/*\n; (clojure.spec.alpha/and\n; (clojure.spec.alpha/nilable :reitit.spec/raw-route))))\n; :reitit.spec/raw-routes:\n; (clojure.spec.alpha/or\n; :route\n; :reitit.spec/raw-route\n; :routes\n; (clojure.spec.alpha/coll-of :reitit.spec/raw-route :into []))\n;\n; -------------------------\n; Detected 2 errors\n\nValidating route data\nTODO\n"},"ring/":{"url":"ring/","title":"Ring","keywords":"","body":"Ring\n\nRing-router\nDynamic extensions\nData-driven Middleware\nParameter coercion\nCompiling middleware\n\n"},"ring/ring.html":{"url":"ring/ring.html","title":"Ring-router","keywords":"","body":"Ring Router\nRing-router adds support for handlers, middleware and routing based on :request-method. Ring-router is created with reitit.ring/router function. It runs a custom route compiler, creating a optimized stucture for handling route matches, with compiled middleware chain & handlers for all request methods. It also ensures that all routes have a :handler defined.\nSimple Ring app:\n(require '[reitit.ring :as ring])\n\n(defn handler [_]\n {:status 200, :body \"ok\"})\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler])))\n\nApplying the handler:\n(app {:request-method :get, :uri \"/favicon.ico\"})\n; nil\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\nThe expanded routes shows the compilation results:\n(-> app (ring/get-router) (reitit/routes))\n; [[\"/ping\"\n; {:handler #object[...]}\n; #Methods{:any #Endpoint{:meta {:handler #object[...]},\n; :handler #object[...],\n; :middleware []}}]]\n\nNote that the compiled resuts as third element in the route vector.\nRequest-method based routing\nHandler are also looked under request-method keys: :get, :head, :patch, :delete, :options, :post or :put. Top-level handler is used if request-method based handler is not found.\n(def app\n (ring/ring-handler\n (ring/router\n [\"/ping\" {:name ::ping\n :get handler\n :post handler}])))\n\n(app {:request-method :get, :uri \"/ping\"})\n; {:status 200, :body \"ok\"}\n\n(app {:request-method :put, :uri \"/ping\"})\n; nil\n\nName-based reverse routing:\n(-> app\n (ring/get-router)\n (reitit/match-by-name ::ping)\n :path)\n; \"/ping\"\n\nMiddleware\nMiddleware can be added with a :middleware key, either to top-level or under :request-method submap. It's value should be a vector value of the following:\n\nnormal ring middleware function handler -> request -> response\nvector of middleware function handler ?args -> request -> response and optinally it's args.\n\nA middleware and a handler:\n(defn wrap [handler id]\n (fn [request]\n (handler (update request ::acc (fnil conj []) id))))\n\n(defn handler [{:keys [::acc]}]\n {:status 200, :body (conj acc :handler)})\n\nApp with nested middleware:\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\" {:middleware [#(wrap % :api)]}\n [\"/ping\" handler]\n [\"/admin\" {:middleware [[wrap :admin]]}\n [\"/db\" {:middleware [[wrap :db]]\n :delete {:middleware [[wrap :delete]]\n :handler handler}}]]])))\n\nMiddleware is applied correctly:\n(app {:request-method :delete, :uri \"/api/ping\"})\n; {:status 200, :body [:api :handler]}\n\n(app {:request-method :delete, :uri \"/api/admin/db\"})\n; {:status 200, :body [:api :admin :db :delete :handler]}\n\nNot found\nIf no routes match, nil is returned, which is not understood by Ring.\nEnabling custom error messages:\n(def app\n (some-fn\n (ring/ring-handler\n (ring/router\n [\"/ping\" handler]))\n (constantly {:status 404})))\n\n(app {:uri \"/invalid\"})\n; {:status 404}\n\nAsync Ring\nAll built-in middleware provide both 2 and 3-arity and are compiled for both Clojure & ClojureScript, so they work with Async Ring and Node.js too.\n"},"ring/dynamic_extensions.html":{"url":"ring/dynamic_extensions.html","title":"Dynamic extensions","keywords":"","body":"Dynamic extensions\nring-handler injects the Match into a request and it can be extracted at runtime with reitit.ring/get-match. This can be used to build ad-hoc extensions to the system.\nExample middleware to guard routes based on user roles:\n(require '[clojure.set :as set])\n\n(defn wrap-enforce-roles [handler]\n (fn [{:keys [::roles] :as request}]\n (let [required (some-> request (ring/get-match) :meta ::roles)]\n (if (and (seq required) (not (set/subset? required roles)))\n {:status 403, :body \"forbidden\"}\n (handler request)))))\n\nMounted to an app via router meta-data (effecting all routes):\n(def handler (constantly {:status 200, :body \"ok\"}))\n\n(def app\n (ring/ring-handler\n (ring/router\n [[\"/api\"\n [\"/ping\" handler]\n [\"/admin\" {::roles #{:admin}}\n [\"/ping\" handler]]]]\n {:meta {:middleware [wrap-enforce-roles]}})))\n\nAnonymous access to public route:\n(app {:request-method :get, :uri \"/api/ping\"})\n; {:status 200, :body \"ok\"}\n\nAnonymous access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\"})\n; {:status 403, :body \"forbidden\"}\n\nAuthorized access to guarded route:\n(app {:request-method :get, :uri \"/api/admin/ping\", ::roles #{:admin}})\n; {:status 200, :body \"ok\"}\n\n"},"ring/data_driven_middleware.html":{"url":"ring/data_driven_middleware.html","title":"Data-driven Middleware","keywords":"","body":"Data-driven Middleware\nRing defines middleware as a function of type handler & 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/parameter_coercion.html":{"url":"ring/parameter_coercion.html","title":"Parameter coercion","keywords":"","body":"Parameter coercion\nReitit provides pluggable parameter coercion via reitit.ring.coercion.protocol/Coercion protocol, originally introduced in compojure-api. Reitit ships with reitit.ring.coercion.spec/SpecCoercion providing implemenation for clojure.spec and data-specs.\nNOTE: Before Clojure 1.9.0 is shipped, to use the spec-coercion, one needs to add the following dependencies manually to the project:\n[org.clojure/clojure \"1.9.0-beta2\"]\n[org.clojure/spec.alpha \"0.1.123\"]\n[metosin/spec-tools \"0.4.0\"]\n\nRing request and response coercion\nTo use Coercion with Ring, one needs to do the following:\n\nDefine parameters and responses as data into route meta-data, in format adopted from ring-swagger:\n:parameters map, with submaps for different parameters: :query, :body, :form, :header and :path. Parameters are defined in the format understood by the Coercion.\n:responses map, with response status codes as keys (or :default for \"everything else\") with maps with :schema and optionally :description as values.\n\n\nDefine a Coercion to route meta-data under :coercion\nMount request & response coercion middleware to the routes (recommended to mount to all routes under router as they mounted only to routes which have the parameters / responses defined):\nreitit.ring.coercion/gen-wrap-coerce-parameters\ngen-wrap-coerce-parameters/gen-wrap-coerce-responses\n\n\n\nIf the request coercion succeeds, the coerced parameters are injected into request under :parameters.\nIf either request or response coercion fails, an descriptive error is thrown.\nExample with data-specs\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body {:x int?, :y int?}}\n :responses {200 {:schema {:total pos-int?}}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\nExample with specs\nCurrently, clojure.spec doesn't support runtime transformations via conforming, so one needs to wrap all specs with spec-tools.core/spec.\n(require '[reitit.ring :as ring])\n(require '[reitit.ring.coercion :as coercion])\n(require '[reitit.ring.coercion.spec :as spec])\n(require '[clojure.spec.alpha :as s])\n(require '[spec-tools.core :as st])\n\n(s/def ::x (st/spec int?))\n(s/def ::y (st/spec int?))\n(s/def ::total int?)\n(s/def ::request (s/keys :req-un [::x ::y]))\n(s/def ::response (s/keys :req-un [::total]))\n\n(def app\n (ring/ring-handler\n (ring/router\n [\"/api\"\n [\"/ping\" {:parameters {:body ::request}\n :responses {200 {:schema ::response}}\n :get {:handler (fn [{{{:keys [x y]} :body} :parameters}]\n {:status 200\n :body {:total (+ x y)}})}}]]\n {:meta {:middleware [coercion/gen-wrap-coerce-parameters\n coercion/gen-wrap-coerce-response]\n :coercion spec/coercion}})))\n\n(app\n {:request-method :get\n :uri \"/api/ping\"\n :body-params {:x 1, :y 2}})\n; {:status 200, :body {:total 3}}\n\n"},"ring/compiling_middleware.html":{"url":"ring/compiling_middleware.html","title":"Compiling middleware","keywords":"","body":"Compiling Middleware\nThe dynamic extensions is a easy way to extend the system. To enable fast lookups into route data, we can compile them into any shape (records, functions etc.) we want, enabling fast access at request-time.\nStill, we can do much better. As we know the exact route that middleware/interceptor is linked to, we can pass the (compiled) route information into the middleware/interceptor at creation-time. It can do local reasoning: extract and transform relevant data just for it and pass it into the actual request-handler via a closure - yielding much faster runtime processing. It can also decide not to mount itself by returning nil. Why mount a wrap-enforce-roles middleware for a route if there are no roles required for it?\nTo enable this we use middleware records :gen-wrap key instead of the normal :wrap. :gen-wrap expects a function of route-meta router-opts => ?wrap.\nTo demonstrate the two approaches, below are response coercion middleware written as normal ring middleware function and as middleware record with :gen-wrap. Actual codes can be found in reitit.ring.coercion:\nNaive\n\nReads the compiled route information on every request.\n\n(defn wrap-coerce-response\n \"Pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise will do nothing.\"\n [handler]\n (fn\n ([request]\n (let [response (handler request)\n method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (coerce-response coercers request response))\n response)))\n ([request respond raise]\n (let [method (:request-method request)\n match (ring/get-match request)\n responses (-> match :result method :meta :responses)\n coercion (-> match :meta :coercion)\n opts (-> match :meta :opts)]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (handler request #(respond (coerce-response coercers request %))))\n (handler request respond raise))))))\n\nCompiled\n\nRoute information is provided via a closure\nPre-compiled coercers\nMounts only if :coercion and :responses are defined for the route\n\n(require '[reitit.ring.middleware :as middleware])\n\n(def gen-wrap-coerce-response\n \"Generator for pluggable response coercion middleware.\n Expects a :coercion of type `reitit.coercion.protocol/Coercion`\n and :responses from route meta, otherwise does not mount.\"\n (middleware/create\n {:name ::coerce-response\n :gen-wrap (fn [{:keys [responses coercion opts]} _]\n (if (and coercion responses)\n (let [coercers (response-coercers coercion responses opts)]\n (fn [handler]\n (fn\n ([request]\n (coerce-response coercers request (handler request)))\n ([request respond raise]\n (handler request #(respond (coerce-response coercers request %)) raise)))))))}))\n\nThe latter has 50% less code, is easier to reason about and is much faster.\n"},"performance.html":{"url":"performance.html","title":"Performance","keywords":"","body":"Performance\nThere are many great routing libraries for Clojure(Script), but not many are optimized for perf. Reitit tries to be both great in features and 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"}}} \ No newline at end of file