scotty-params-parser 0.3 → 0.4
raw patch · 3 files changed
+60/−60 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Scotty.QueryParser: data Params a
- Scotty.QueryParser: instance GHC.Base.Alternative Scotty.QueryParser.Params
- Scotty.QueryParser: instance GHC.Base.Applicative Scotty.QueryParser.Params
- Scotty.QueryParser: instance GHC.Base.Functor Scotty.QueryParser.Params
- Scotty.QueryParser: instance GHC.Base.Monad Scotty.QueryParser.Params
- Scotty.QueryParser: instance GHC.Base.MonadPlus Scotty.QueryParser.Params
- Scotty.QueryParser: lookup :: Text -> Params Text
- Scotty.QueryParser: param :: Param a -> Text -> Params a
- Scotty.QueryParser: run :: Params a -> forall m e. (ScottyError e, Monad m) => ActionT e m a
- Scotty.QueryParser: type Param a = Text -> Either Text a
+ Scotty.ParamsParser: data Params a
+ Scotty.ParamsParser: instance GHC.Base.Alternative Scotty.ParamsParser.Params
+ Scotty.ParamsParser: instance GHC.Base.Applicative Scotty.ParamsParser.Params
+ Scotty.ParamsParser: instance GHC.Base.Functor Scotty.ParamsParser.Params
+ Scotty.ParamsParser: instance GHC.Base.Monad Scotty.ParamsParser.Params
+ Scotty.ParamsParser: instance GHC.Base.MonadPlus Scotty.ParamsParser.Params
+ Scotty.ParamsParser: lookup :: Text -> Params Text
+ Scotty.ParamsParser: param :: Param a -> Text -> Params a
+ Scotty.ParamsParser: run :: Params a -> forall m e. (ScottyError e, Monad m) => ActionT e m a
+ Scotty.ParamsParser: type Param a = Text -> Either Text a
Files
- library/Scotty/ParamsParser.hs +58/−0
- library/Scotty/QueryParser.hs +0/−58
- scotty-params-parser.cabal +2/−2
+ library/Scotty/ParamsParser.hs view
@@ -0,0 +1,58 @@+-- |+-- A DSL for parsing of an HTTP request query parameters.+module Scotty.ParamsParser+(+ Params,+ run,+ lookup,+ param,+ Param,+)+where++import BasePrelude hiding (lookup)+import Control.Monad.Trans.Class+import Control.Monad.Trans.Reader+import Data.Text.Lazy (Text)+import qualified Web.Scotty.Trans as Scotty+import qualified Success.Pure as Success+import qualified Data.HashMap.Strict as HashMap+import qualified Data.Text.Lazy+++-- |+-- A multiple parameters parser.+newtype Params a =+ Params (ReaderT (HashMap.HashMap Text Text) (Success.Success 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')) =+ Scotty.params >>= onParams+ where+ onParams params =+ either (Scotty.raise . Scotty.stringError . Data.Text.Lazy.unpack . fromMaybe "") return $+ Success.asEither $+ success' $+ HashMap.fromList params++lookup :: Text -> Params Text+lookup name =+ Params $ ReaderT $ \hashMap ->+ maybe (Success.failure $ "No parameter named" <> name) Success.success $+ 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+
− library/Scotty/QueryParser.hs
@@ -1,58 +0,0 @@--- |--- A DSL for parsing of an HTTP request query parameters.-module Scotty.QueryParser-(- Params,- run,- lookup,- param,- Param,-)-where--import BasePrelude hiding (lookup)-import Control.Monad.Trans.Class-import Control.Monad.Trans.Reader-import Data.Text.Lazy (Text)-import qualified Web.Scotty.Trans as Scotty-import qualified Success.Pure as Success-import qualified Data.HashMap.Strict as HashMap-import qualified Data.Text.Lazy----- |--- A multiple parameters parser.-newtype Params a =- Params (ReaderT (HashMap.HashMap Text Text) (Success.Success 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')) =- Scotty.params >>= onParams- where- onParams params =- either (Scotty.raise . Scotty.stringError . Data.Text.Lazy.unpack . fromMaybe "") return $- Success.asEither $- success' $- HashMap.fromList params--lookup :: Text -> Params Text-lookup name =- Params $ ReaderT $ \hashMap ->- maybe (Success.failure $ "No parameter named" <> name) Success.success $- 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-
scotty-params-parser.cabal view
@@ -1,7 +1,7 @@ name: scotty-params-parser version:- 0.3+ 0.4 synopsis: HTTP-request's query parameters parser abstraction for "scotty" category:@@ -42,7 +42,7 @@ Haskell2010 other-modules: exposed-modules:- Scotty.QueryParser+ Scotty.ParamsParser build-depends: -- scotty >= 0.11 && < 0.12,