yesod-form 0.3.3 → 0.3.4
raw patch · 4 files changed
+45/−42 lines, 4 filesdep ~blaze-builderdep ~blaze-htmldep ~bytestring
Dependency ranges changed: blaze-builder, blaze-html, bytestring, text, time
Files
- Yesod/Form/Functions.hs +18/−18
- Yesod/Form/MassInput.hs +3/−3
- Yesod/Form/Types.hs +3/−0
- yesod-form.cabal +21/−21
Yesod/Form/Functions.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE FlexibleContexts #-} module Yesod.Form.Functions- ( -- * Running in Form monad+ ( -- * Running in MForm monad newFormIdent , askParams , askFiles@@ -62,7 +62,7 @@ #endif -- | Get a unique identifier.-newFormIdent :: Form sub master Text+newFormIdent :: MForm sub master Text newFormIdent = do i <- get let i' = incrInts i@@ -72,12 +72,12 @@ incrInts (IntSingle i) = IntSingle $ i + 1 incrInts (IntCons i is) = (i + 1) `IntCons` is -formToAForm :: Form sub master (FormResult a, FieldView sub master) -> AForm sub master a+formToAForm :: MForm sub master (FormResult a, FieldView sub master) -> AForm sub master a formToAForm form = AForm $ \(master, langs) env ints -> do ((a, xml), ints', enc) <- runRWST form (env, master, langs) ints return (a, (:) xml, ints', enc) -aFormToForm :: AForm sub master a -> Form sub master (FormResult a, [FieldView sub master] -> [FieldView sub master])+aFormToForm :: AForm sub master a -> MForm sub master (FormResult a, [FieldView sub master] -> [FieldView sub master]) aFormToForm (AForm aform) = do ints <- get (env, master, langs) <- ask@@ -86,24 +86,24 @@ tell enc return (a, xml) -askParams :: Form sub master (Maybe Env)+askParams :: MForm sub master (Maybe Env) askParams = do (x, _, _) <- ask return $ liftM fst x -askFiles :: Form sub master (Maybe FileEnv)+askFiles :: MForm sub master (Maybe FileEnv) askFiles = do (x, _, _) <- ask return $ liftM snd x mreq :: (RenderMessage master msg, RenderMessage master FormMessage) => Field sub master a -> FieldSettings msg -> Maybe a- -> Form sub master (FormResult a, FieldView sub master)+ -> MForm sub master (FormResult a, FieldView sub master) mreq field fs mdef = mhelper field fs mdef (\m l -> FormFailure [renderMessage m l MsgValueRequired]) FormSuccess True mopt :: RenderMessage master msg => Field sub master a -> FieldSettings msg -> Maybe (Maybe a)- -> Form sub master (FormResult (Maybe a), FieldView sub master)+ -> MForm sub master (FormResult (Maybe a), FieldView sub master) mopt field fs mdef = mhelper field fs (join mdef) (const $ const $ FormSuccess Nothing) (FormSuccess . Just) False mhelper :: RenderMessage master msg@@ -113,7 +113,7 @@ -> (master -> [Text] -> FormResult b) -- ^ on missing -> (a -> FormResult b) -- ^ on success -> Bool -- ^ is it required?- -> Form sub master (FormResult b, FieldView sub master)+ -> MForm sub master (FormResult b, FieldView sub master) mhelper Field {..} FieldSettings {..} mdef onMissing onFound isReq = do mp <- askParams@@ -157,7 +157,7 @@ -> AForm sub master (Maybe a) aopt a b = formToAForm . mopt a b -runFormGeneric :: MonadIO m => Form sub master a -> master -> [Text] -> Maybe (Env, FileEnv) -> GGHandler sub master m (a, Enctype)+runFormGeneric :: MonadIO m => MForm sub master a -> master -> [Text] -> Maybe (Env, FileEnv) -> GGHandler sub master m (a, Enctype) runFormGeneric form master langs env = liftIOHandler $ evalRWST form (env, master, langs) (IntSingle 1) -- | This function is used to both initially render a form and to later extract@@ -170,14 +170,14 @@ -- the form submit to a POST page. In such a case, both the GET and POST -- handlers should use 'runFormPost'. runFormPost :: RenderMessage master FormMessage- => (Html -> Form sub master (FormResult a, xml))+ => (Html -> MForm sub master (FormResult a, xml)) -> GHandler sub master ((FormResult a, xml), Enctype) runFormPost form = do env <- postEnv postHelper form env postHelper :: RenderMessage master FormMessage- => (Html -> Form sub master (FormResult a, xml))+ => (Html -> MForm sub master (FormResult a, xml)) -> Maybe (Env, FileEnv) -> GHandler sub master ((FormResult a, xml), Enctype) postHelper form env = do@@ -204,7 +204,7 @@ -- general usage, you can stick with @runFormPost@. generateFormPost :: RenderMessage master FormMessage- => (Html -> Form sub master (FormResult a, xml))+ => (Html -> MForm sub master (FormResult a, xml)) -> GHandler sub master ((FormResult a, xml), Enctype) generateFormPost form = postHelper form Nothing @@ -220,14 +220,14 @@ where notEmpty = not . L.null . fileContent -runFormPostNoNonce :: (Html -> Form sub master (FormResult a, xml)) -> GHandler sub master ((FormResult a, xml), Enctype)+runFormPostNoNonce :: (Html -> MForm sub master (FormResult a, xml)) -> GHandler sub master ((FormResult a, xml), Enctype) runFormPostNoNonce form = do langs <- languages m <- getYesod env <- postEnv runFormGeneric (form mempty) m langs env -runFormGet :: (Html -> Form sub master a) -> GHandler sub master (a, Enctype)+runFormGet :: (Html -> MForm sub master a) -> GHandler sub master (a, Enctype) runFormGet form = do gets <- liftM reqGetParams getRequest let env =@@ -236,13 +236,13 @@ Just _ -> Just (Map.unionsWith (++) $ map (\(x, y) -> Map.singleton x [y]) gets, Map.empty) getHelper form env -generateFormGet :: (Html -> Form sub master a) -> GHandler sub master (a, Enctype)+generateFormGet :: (Html -> MForm sub master a) -> GHandler sub master (a, Enctype) generateFormGet form = getHelper form Nothing getKey :: Text getKey = "_hasdata" -getHelper :: (Html -> Form sub master a) -> Maybe (Env, FileEnv) -> GHandler sub master (a, Enctype)+getHelper :: (Html -> MForm sub master a) -> Maybe (Env, FileEnv) -> GHandler sub master (a, Enctype) getHelper form env = do let fragment = [HTML|<input type=hidden name=#{getKey}>|] langs <- languages@@ -252,7 +252,7 @@ type FormRender sub master a = AForm sub master a -> Html- -> Form sub master (FormResult a, GWidget sub master ())+ -> MForm sub master (FormResult a, GWidget sub master ()) renderTable, renderDivs :: FormRender sub master a renderTable aform fragment = do
Yesod/Form/MassInput.hs view
@@ -35,7 +35,7 @@ #define WHAMLET $whamlet #endif -down :: Int -> Form sub master ()+down :: Int -> MForm sub master () down 0 = return () down i | i < 0 = error "called down with a negative number" down i = do@@ -43,7 +43,7 @@ put $ IntCons 0 is down $ i - 1 -up :: Int -> Form sub master ()+up :: Int -> MForm sub master () up 0 = return () up i | i < 0 = error "called down with a negative number" up i = do@@ -98,7 +98,7 @@ withDelete :: (xml ~ GWidget sub master (), RenderMessage master FormMessage) => AForm sub master a- -> Form sub master (Either xml (FormResult a, [FieldView sub master]))+ -> MForm sub master (Either xml (FormResult a, [FieldView sub master])) withDelete af = do down 1 deleteName <- newFormIdent
Yesod/Form/Types.hs view
@@ -11,6 +11,7 @@ , Ints (..) -- * Form , Form+ , MForm , AForm (..) -- * Build forms , Field (..)@@ -75,6 +76,8 @@ type Lang = Text type Form sub master a = RWST (Maybe (Env, FileEnv), master, [Lang]) Enctype Ints (GGHandler sub master IO) a+{-# DEPRECATED Form "Use MForm instead" #-}+type MForm sub master a = RWST (Maybe (Env, FileEnv), master, [Lang]) Enctype Ints (GGHandler sub master IO) a newtype AForm sub master a = AForm { unAForm :: (master, [Text]) -> Maybe (Env, FileEnv) -> Ints -> GGHandler sub master IO (FormResult a, [FieldView sub master] -> [FieldView sub master], Ints, Enctype)
yesod-form.cabal view
@@ -1,5 +1,5 @@ name: yesod-form-version: 0.3.3+version: 0.3.4 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -13,27 +13,27 @@ description: Form handling support for Yesod Web Framework library- build-depends: base >= 4 && < 5- , yesod-core >= 0.9 && < 0.10- , yesod-persistent >= 0.2 && < 0.3- , time >= 1.1.4 && < 1.3- , hamlet >= 0.10 && < 0.11- , shakespeare-css >= 0.10 && < 0.11- , shakespeare-js >= 0.10 && < 0.11- , persistent >= 0.6 && < 0.7- , yesod-persistent >= 0.2 && < 0.3+ build-depends: base >= 4 && < 5+ , yesod-core >= 0.9 && < 0.10+ , yesod-persistent >= 0.2 && < 0.3+ , time >= 1.1.4+ , hamlet >= 0.10 && < 0.11+ , shakespeare-css >= 0.10 && < 0.11+ , shakespeare-js >= 0.10 && < 0.11+ , persistent >= 0.6 && < 0.7+ , yesod-persistent >= 0.2 && < 0.3 , template-haskell- , transformers >= 0.2.2 && < 0.3- , data-default >= 0.3 && < 0.4- , xss-sanitize >= 0.3.0.1 && < 0.4- , blaze-builder >= 0.2.1 && < 0.4- , network >= 2.2 && < 2.4- , email-validate >= 0.2.6 && < 0.3- , blaze-html >= 0.4 && < 0.5- , bytestring >= 0.9 && < 0.10- , text >= 0.7 && < 1.0- , wai >= 0.4 && < 0.5- , containers >= 0.2 && < 0.5+ , transformers >= 0.2.2 && < 0.3+ , data-default >= 0.3 && < 0.4+ , xss-sanitize >= 0.3.0.1 && < 0.4+ , blaze-builder >= 0.2.1.4 && < 0.4+ , network >= 2.2 && < 2.4+ , email-validate >= 0.2.6 && < 0.3+ , blaze-html >= 0.4.1.3 && < 0.5+ , bytestring >= 0.9.1.4 && < 0.10+ , text >= 0.9 && < 0.12+ , wai >= 0.4 && < 0.5+ , containers >= 0.2 && < 0.5 exposed-modules: Yesod.Form Yesod.Form.Class Yesod.Form.Types