5/14      !"#$%&'()*+,-./0123None *2468=BK;456789:;<= >?@ABCDE FG HIJKLMNOPQRSTUVWXYZ[\]^_/456789:;<= ?@ABCD FG HIJKLMNOPQRSTU456789:;<= >?@ABCDE FG HIJKLMNOPQVWXZYRS\[TU]^_ Safe-InferredMinimum implemention: Take a  ByteString value and parse it as a, or fail with a message.4Default implementation parses comma-delimited lists. 3parseParamList t = mapM parseParam (BS.split ',' t)Useful for creating - instances for things that already implement `. Ex: 3instance Parsable Int where parseParam = readEitheraxChecks if parameter is present and is null-valued, not a literal '()'. If the URI requested is: '/foo?bar=()&baz' then baz will parse as (), where bar will not.bOverrides default  to parse String.cdefghabijk cdefghabijkNoneHMl !"#$%mnl !"#$%mnl !"#$%mnNone234HMT &get = addroute o'post = addroute p(put = addroute q) delete = addroute r*patch = addroute s+5Add a route that matches regardless of the HTTP verb.,Specify an action to take if nothing else is found. Note: this _always_ matches, so should generally be the last route specified.-Define a route with a t, u0 value representing the path spec, and a body (Action) which modifies the response. %addroute GET "/" $ text "beam me up!"RThe path spec can include values starting with a colon, which are interpreted as captures7. These are named wildcards that can be looked up with param. =addroute GET "/foo/:bar" $ do v <- param "bar" text v(curl http://localhost:3000/foo/something something.SMatch requests using a regular expression. Named captures are not yet supported. |get (regex "^/f(.*)r$") $ do path <- param "0" cap <- param "1" text $ mconcat ["Path: ", path, "\nCapture: ", cap]"curl http://localhost:3000/foo/barPath: /foo/barCapture: oo/ba/Standard Sinatra-style route. Named captures are prepended with colons. This is the default route type generated by OverloadedString routes. i.e. get (capture "/foo/:bar") $ ...and <{-# LANGUAGE OverloadedStrings #-} ... get "/foo/:bar" $ ...are equivalent.0CBuild a route based on a function which can match using the entire v object. w' indicates the route does not match. A xh value indicates a successful match, optionally returning a list of key-value pairs accessible by param. uget (function $ \req -> Just [("version", T.pack $ show $ httpVersion req)]) $ do v <- param "version" text vcurl http://localhost:3000/HTTP/1.11OBuild a route that requires the requested path match exactly, without captures.&'()*+,-yz{|./01 &'()*+,-y./01&'()*+,-yz{|./01NoneHM23}4  !"#$%&'()*+,-./0123423 &'()*+,-./01 $ !"#% 23}~      !"#$%&'()*+,-./0123456789:;<==>?@ABCD"EFGHIJKL'M$NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqopropsoptopuopvwxyz{|^}~^} growler-0.2.0 Web.GrowlerWeb.Growler.TypesWeb.Growler.ParsableWeb.Growler.HandlerWeb.Growler.Router ResponseState BodySource RawSource StreamSource LBSSource BuilderSource FileSource RoutePatternFunctionLiteralCaptureGrowlerGrowlerTHandlerHandlerTParsable parseParamparseParamList readEithercurrentResponseabortstatus addHeader setHeaderbodyjsonfileformDataheadersjsonDataparamsrawredirectrequeststreamtexthtml routePatterngetpostputdeletepatchmatchAnynotFoundaddRouteregexcapturefunctionliteralgrowlgrowlerresponseStatusresponseHeadersresponseBodySource RequestStaterequestMatchedPattern requestParamsrequestRequestParam$fIsStringRoutePattern HasStatus HasHeaders HasBodySource bodySource&$fHasBodySourceResponseStateBodySource fromGrowlerT fromHandler HandlerAbortEarlyTermination HasRequest HasParamsHasMatchedPatternmatchedPattern StMHandlerT unStMHandlerT StHandlerT unStHandlerT$fMonadIOGrowlerT$fApplicativeGrowlerT$fFunctorGrowlerTTFCo:R:StMHandlerTa$fMonadBaseControlbHandlerTTFCo:R:StTHandlerTa$fMonadTransControlHandlerT$fMonadBasebHandlerT$fMonadTransHandlerT$$fHasMatchedPatternRequestStateMaybebaseGHC.ReadRead $fParsable()$fParsableChar$fParsableInteger $fParsableInt$fParsableFloat$fParsableDouble$fParsableBool $fParsable[]$fParsableByteString$fParsableText$fParsableText0 initialState runHandler liftAroundhttp-types-0.8.5Network.HTTP.Types.MethodGETPOSTPUTDELETEPATCH StdMethod text-1.1.1.3Data.Text.InternalText wai-3.0.2Network.Wai.InternalRequest Data.MaybeNothingJustroute matchRoutepathparseEncodedParams growlerRouter