packages feed

scotty-params-parser 0.4 → 0.5.1

raw patch · 2 files changed

+20/−24 lines, 2 filesdep +matcherdep ~base-prelude

Dependencies added: matcher

Dependency ranges changed: base-prelude

Files

library/Scotty/ParamsParser.hs view
@@ -4,9 +4,7 @@ (   Params,   run,-  lookup,   param,-  Param, ) where @@ -18,41 +16,38 @@ import qualified Success.Pure as Success import qualified Data.HashMap.Strict as HashMap import qualified Data.Text.Lazy+import qualified Data.Text+import qualified Matcher   -- | -- A multiple parameters parser. newtype Params a =-  Params (ReaderT (HashMap.HashMap Text Text) (Success.Success Text) a)+  Params (Matcher.Matcher (HashMap.HashMap Text Text) a)   deriving (Functor, Applicative, Alternative, Monad, MonadPlus) -run :: Params a -> forall m e. (Scotty.ScottyError e, Monad m) => Scotty.ActionT e m a-run (Params (ReaderT success')) =+run :: (Scotty.ScottyError e, Monad m) => Params a -> Scotty.ActionT e m a+run (Params matcher) =   Scotty.params >>= onParams   where     onParams params =-      either (Scotty.raise . Scotty.stringError . Data.Text.Lazy.unpack . fromMaybe "") return $-      Success.asEither $-      success' $+      either (Scotty.raise . Scotty.stringError . Data.Text.unpack) return $+      Matcher.run matcher $       HashMap.fromList params  lookup :: Text -> Params Text lookup name =-  Params $ ReaderT $ \hashMap ->-    maybe (Success.failure $ "No parameter named" <> name) Success.success $+  Params $+  Matcher.converts $+  \hashMap ->+    maybe (Left ("No parameter named" <> Data.Text.Lazy.toStrict name)) Right $     HashMap.lookup name hashMap  -- |--- Given a parameter parser and name attempts to get it.-param :: Param a -> Text -> Params a-param paramParser name =-  lookup name >>= onText-  where-    onText text =-      Params $ ReaderT $ const $ either Success.failure Success.success $ paramParser text---- |--- A single parameter parser.-type Param a =-  Text -> Either Text a+-- Given a parameter name and a parser attempts to get it.+param :: Text -> Matcher.Matcher Text a -> Params a+param name matcher2 =+  case lookup name of+    Params matcher1 ->+      Params (matcher2 . matcher1) 
scotty-params-parser.cabal view
@@ -1,7 +1,7 @@ name:   scotty-params-parser version:-  0.4+  0.5.1 synopsis:   HTTP-request's query parameters parser abstraction for "scotty" category:@@ -50,6 +50,7 @@     unordered-containers >= 0.2 && < 0.3,     text == 1.*,     --+    matcher >= 0.1 && < 0.2,     transformers >= 0.4 && < 0.6,     success >= 0.2.6 && < 0.3,-    base-prelude >= 0.1.21 && < 0.2+    base-prelude >= 0.1.21 && < 2