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 +17/−22
- scotty-params-parser.cabal +3/−2
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