yesod-form 1.7.9 → 1.7.9.2
raw patch · 24 files changed
+90/−82 lines, 24 filesdep ~basenew-uploader
Dependency ranges changed: base
Files
- ChangeLog.md +8/−0
- Yesod/Form/Bootstrap3.hs +7/−5
- Yesod/Form/Fields.hs +12/−13
- Yesod/Form/Functions.hs +7/−6
- Yesod/Form/I18n/Chinese.hs +2/−2
- Yesod/Form/I18n/Czech.hs +2/−2
- Yesod/Form/I18n/Dutch.hs +2/−2
- Yesod/Form/I18n/English.hs +2/−2
- Yesod/Form/I18n/French.hs +2/−2
- Yesod/Form/I18n/German.hs +2/−2
- Yesod/Form/I18n/Japanese.hs +2/−2
- Yesod/Form/I18n/Korean.hs +2/−2
- Yesod/Form/I18n/Norwegian.hs +2/−2
- Yesod/Form/I18n/Portuguese.hs +2/−2
- Yesod/Form/I18n/Romanian.hs +2/−2
- Yesod/Form/I18n/Russian.hs +2/−2
- Yesod/Form/I18n/Spanish.hs +1/−2
- Yesod/Form/I18n/Swedish.hs +2/−2
- Yesod/Form/Input.hs +3/−3
- Yesod/Form/Jquery.hs +5/−4
- Yesod/Form/MassInput.hs +4/−3
- Yesod/Form/Nic.hs +4/−3
- Yesod/Form/Types.hs +11/−15
- yesod-form.cabal +2/−2
ChangeLog.md view
@@ -1,5 +1,13 @@ # ChangeLog for yesod-form +## 1.7.9.2++* Improve deprecation messages for `radioField` and `checkboxesField` [#1902](https://github.com/yesodweb/yesod/pull/1902)++## 1.7.9.1++* Set `base >= 4.11` for less CPP and imports [#1876](https://github.com/yesodweb/yesod/pull/1876)+ ## 1.7.9 * Added `checkboxesField'` for creating checkbox in more correct way than original `checkboxesField`
Yesod/Form/Bootstrap3.hs view
@@ -1,6 +1,8 @@+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeOperators #-}+ -- | Helper functions for creating forms when using <http://getbootstrap.com/ Bootstrap 3>. -- @@ -112,10 +114,10 @@ toOffset (ColLg columns) = "col-lg-offset-" ++ show columns addGO :: BootstrapGridOptions -> BootstrapGridOptions -> BootstrapGridOptions-addGO (ColXs a) (ColXs b) = ColXs (a+b)-addGO (ColSm a) (ColSm b) = ColSm (a+b)-addGO (ColMd a) (ColMd b) = ColMd (a+b)-addGO (ColLg a) (ColLg b) = ColLg (a+b)+addGO (ColXs a) (ColXs b) = ColXs (a + b)+addGO (ColSm a) (ColSm b) = ColSm (a + b)+addGO (ColMd a) (ColMd b) = ColMd (a + b)+addGO (ColLg a) (ColLg b) = ColLg (a + b) addGO a b | a > b = addGO b a addGO (ColXs a) other = addGO (ColSm a) other addGO (ColSm a) other = addGO (ColMd a) other
Yesod/Form/Fields.hs view
@@ -1,11 +1,13 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+ -- | Field functions allow you to easily create and validate forms, cleanly handling the uncertainty of parsing user input. -- -- When possible, the field functions use a specific input type (e.g. "number"), allowing supporting browsers to validate the input before form submission. Browsers can also improve usability with this information; for example, mobile browsers might present a specialized keyboard for an input of type "email" or "number".@@ -111,7 +113,7 @@ import Yesod.Persist (selectList, Filter, SelectOpt, Key) import Control.Arrow ((&&&)) -import Control.Applicative ((<$>), (<|>))+import Control.Applicative ((<|>)) import Data.Attoparsec.Text (Parser, char, string, digit, skipSpace, endOfInput, parseOnly) @@ -119,14 +121,11 @@ import Data.String (IsString) -#if !MIN_VERSION_base(4,8,0)-import Data.Monoid-#endif import Data.Char (isHexDigit) -{-# DEPRECATED radioField "This function seems to have a bug (label could not be found with byLabel algorithm)" #-}-{-# DEPRECATED checkboxesField "This function seems to have a bug (label could not be found with byLabel algorithm)" #-}+{-# DEPRECATED radioField "This function seems to have a bug (label could not be found with byLabel algorithm). Use radioField' instead." #-}+{-# DEPRECATED checkboxesField "This function seems to have a bug (label could not be found with byLabel algorithm). Use checkboxesField' instead." #-} defaultFormMessage :: FormMessage -> Text defaultFormMessage = englishFormMessage@@ -344,7 +343,7 @@ where hour = do x <- digit- y <- (return Control.Applicative.<$> digit) <|> return []+ y <- (return <$> digit) <|> return [] let xy = x : y let i = read xy if i < 0 || i >= 24@@ -1019,7 +1018,7 @@ then "-0." `T.append` (T.drop 2 t1) else t1 - where t1 = T.dropWhile (==' ') t0+ where t1 = T.dropWhile (== ' ') t0 -- $optionsOverview -- These functions create inputs where one or more options can be selected from a list.
Yesod/Form/Functions.hs view
@@ -1,10 +1,12 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE TypeOperators #-}+ module Yesod.Form.Functions ( -- * Running in MForm monad newFormIdent@@ -72,7 +74,6 @@ #define toHtml toMarkup import Yesod.Core import Network.Wai (requestMethod)-import Data.Monoid (mempty, (<>)) import Data.Maybe (listToMaybe, fromMaybe) import qualified Data.Map as Map import qualified Data.Text.Encoding as TE@@ -328,7 +329,7 @@ let tokenKey = defaultCsrfParamName let token = case reqToken req of- Nothing -> Data.Monoid.mempty+ Nothing -> mempty Just n -> [shamlet|<input type=hidden name=#{tokenKey} value=#{n}>|] m <- getYesod langs <- languages
Yesod/Form/I18n/Chinese.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Chinese where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) chineseFormMessage :: FormMessage -> Text-chineseFormMessage (MsgInvalidInteger t) = "无效的整数: " `Data.Monoid.mappend` t+chineseFormMessage (MsgInvalidInteger t) = "无效的整数: " `mappend` t chineseFormMessage (MsgInvalidNumber t) = "无效的数字: " `mappend` t chineseFormMessage (MsgInvalidEntry t) = "无效的条目: " `mappend` t chineseFormMessage MsgInvalidTimeFormat = "无效的时间, 必须符合HH:MM[:SS]格式"
Yesod/Form/I18n/Czech.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Czech where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) czechFormMessage :: FormMessage -> Text-czechFormMessage (MsgInvalidInteger t) = "Neplatné celé číslo: " `Data.Monoid.mappend` t+czechFormMessage (MsgInvalidInteger t) = "Neplatné celé číslo: " `mappend` t czechFormMessage (MsgInvalidNumber t) = "Neplatné číslo: " `mappend` t czechFormMessage (MsgInvalidEntry t) = "Neplatná položka: " `mappend` t czechFormMessage MsgInvalidTimeFormat = "Neplatný čas, musí být ve formátu HH:MM[:SS]"
Yesod/Form/I18n/Dutch.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Dutch where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) dutchFormMessage :: FormMessage -> Text-dutchFormMessage (MsgInvalidInteger t) = "Ongeldig aantal: " `Data.Monoid.mappend` t+dutchFormMessage (MsgInvalidInteger t) = "Ongeldig aantal: " `mappend` t dutchFormMessage (MsgInvalidNumber t) = "Ongeldig getal: " `mappend` t dutchFormMessage (MsgInvalidEntry t) = "Ongeldige invoer: " `mappend` t dutchFormMessage MsgInvalidTimeFormat = "Ongeldige tijd, het juiste formaat is (UU:MM[:SS])"
Yesod/Form/I18n/English.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.English where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) englishFormMessage :: FormMessage -> Text-englishFormMessage (MsgInvalidInteger t) = "Invalid integer: " `Data.Monoid.mappend` t+englishFormMessage (MsgInvalidInteger t) = "Invalid integer: " `mappend` t englishFormMessage (MsgInvalidNumber t) = "Invalid number: " `mappend` t englishFormMessage (MsgInvalidEntry t) = "Invalid entry: " `mappend` t englishFormMessage MsgInvalidTimeFormat = "Invalid time, must be in HH:MM[:SS] format"
Yesod/Form/I18n/French.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.French (frenchFormMessage) where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) frenchFormMessage :: FormMessage -> Text-frenchFormMessage (MsgInvalidInteger t) = "Entier invalide : " `Data.Monoid.mappend` t+frenchFormMessage (MsgInvalidInteger t) = "Entier invalide : " `mappend` t frenchFormMessage (MsgInvalidNumber t) = "Nombre invalide : " `mappend` t frenchFormMessage (MsgInvalidEntry t) = "Entrée invalide : " `mappend` t frenchFormMessage MsgInvalidTimeFormat = "Heure invalide (elle doit être au format HH:MM ou HH:MM:SS"
Yesod/Form/I18n/German.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.German where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) germanFormMessage :: FormMessage -> Text-germanFormMessage (MsgInvalidInteger t) = "Ungültige Ganzzahl: " `Data.Monoid.mappend` t+germanFormMessage (MsgInvalidInteger t) = "Ungültige Ganzzahl: " `mappend` t germanFormMessage (MsgInvalidNumber t) = "Ungültige Zahl: " `mappend` t germanFormMessage (MsgInvalidEntry t) = "Ungültiger Eintrag: " `mappend` t germanFormMessage MsgInvalidTimeFormat = "Ungültiges Zeitformat, HH:MM[:SS] Format erwartet"
Yesod/Form/I18n/Japanese.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Japanese where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) japaneseFormMessage :: FormMessage -> Text-japaneseFormMessage (MsgInvalidInteger t) = "無効な整数です: " `Data.Monoid.mappend` t+japaneseFormMessage (MsgInvalidInteger t) = "無効な整数です: " `mappend` t japaneseFormMessage (MsgInvalidNumber t) = "無効な数値です: " `mappend` t japaneseFormMessage (MsgInvalidEntry t) = "無効な入力です: " `mappend` t japaneseFormMessage MsgInvalidTimeFormat = "無効な時刻です。HH:MM[:SS]フォーマットで入力してください"
Yesod/Form/I18n/Korean.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Korean where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) koreanFormMessage :: FormMessage -> Text-koreanFormMessage (MsgInvalidInteger t) = "잘못된 정수입니다: " `Data.Monoid.mappend` t+koreanFormMessage (MsgInvalidInteger t) = "잘못된 정수입니다: " `mappend` t koreanFormMessage (MsgInvalidNumber t) = "잘못된 숫자입니다: " `mappend` t koreanFormMessage (MsgInvalidEntry t) = "잘못된 입력입니다: " `mappend` t koreanFormMessage MsgInvalidTimeFormat = "잘못된 시간입니다. HH:MM[:SS] 형태로 입력하세요"
Yesod/Form/I18n/Norwegian.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Norwegian where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) norwegianBokmålFormMessage :: FormMessage -> Text-norwegianBokmålFormMessage (MsgInvalidInteger t) = "Ugyldig antall: " `Data.Monoid.mappend` t+norwegianBokmålFormMessage (MsgInvalidInteger t) = "Ugyldig antall: " `mappend` t norwegianBokmålFormMessage (MsgInvalidNumber t) = "Ugyldig nummer: " `mappend` t norwegianBokmålFormMessage (MsgInvalidEntry t) = "Ugyldig oppføring: " `mappend` t norwegianBokmålFormMessage MsgInvalidTimeFormat = "Ugyldig klokkeslett, må være i formatet HH:MM[:SS]"
Yesod/Form/I18n/Portuguese.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Portuguese where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) portugueseFormMessage :: FormMessage -> Text-portugueseFormMessage (MsgInvalidInteger t) = "Número inteiro inválido: " `Data.Monoid.mappend` t+portugueseFormMessage (MsgInvalidInteger t) = "Número inteiro inválido: " `mappend` t portugueseFormMessage (MsgInvalidNumber t) = "Número inválido: " `mappend` t portugueseFormMessage (MsgInvalidEntry t) = "Entrada inválida: " `mappend` t portugueseFormMessage MsgInvalidTimeFormat = "Hora inválida, deve estar no formato HH:MM[:SS]"
Yesod/Form/I18n/Romanian.hs view
@@ -1,15 +1,15 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Romanian where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) -- | Romanian translation -- -- @since 1.7.5 romanianFormMessage :: FormMessage -> Text-romanianFormMessage (MsgInvalidInteger t) = "Număr întreg nevalid: " `Data.Monoid.mappend` t+romanianFormMessage (MsgInvalidInteger t) = "Număr întreg nevalid: " `mappend` t romanianFormMessage (MsgInvalidNumber t) = "Număr nevalid: " `mappend` t romanianFormMessage (MsgInvalidEntry t) = "Valoare nevalidă: " `mappend` t romanianFormMessage MsgInvalidTimeFormat = "Oră nevalidă. Formatul necesar este HH:MM[:SS]"
Yesod/Form/I18n/Russian.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Russian where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) russianFormMessage :: FormMessage -> Text-russianFormMessage (MsgInvalidInteger t) = "Неверно записано целое число: " `Data.Monoid.mappend` t+russianFormMessage (MsgInvalidInteger t) = "Неверно записано целое число: " `mappend` t russianFormMessage (MsgInvalidNumber t) = "Неверный формат числа: " `mappend` t russianFormMessage (MsgInvalidEntry t) = "Неверный выбор: " `mappend` t russianFormMessage MsgInvalidTimeFormat = "Неверно указано время, используйте формат ЧЧ:ММ[:СС]"
Yesod/Form/I18n/Spanish.hs view
@@ -3,11 +3,10 @@ module Yesod.Form.I18n.Spanish where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) spanishFormMessage :: FormMessage -> Text-spanishFormMessage (MsgInvalidInteger t) = "Número entero inválido: " `Data.Monoid.mappend` t+spanishFormMessage (MsgInvalidInteger t) = "Número entero inválido: " `mappend` t spanishFormMessage (MsgInvalidNumber t) = "Número inválido: " `mappend` t spanishFormMessage (MsgInvalidEntry t) = "Entrada inválida: " `mappend` t spanishFormMessage MsgInvalidTimeFormat = "Hora inválida, debe tener el formato HH:MM[:SS]"
Yesod/Form/I18n/Swedish.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE OverloadedStrings #-}+ module Yesod.Form.I18n.Swedish where import Yesod.Form.Types (FormMessage (..))-import Data.Monoid (mappend) import Data.Text (Text) swedishFormMessage :: FormMessage -> Text-swedishFormMessage (MsgInvalidInteger t) = "Ogiltigt antal: " `Data.Monoid.mappend` t+swedishFormMessage (MsgInvalidInteger t) = "Ogiltigt antal: " `mappend` t swedishFormMessage (MsgInvalidNumber t) = "Ogiltigt nummer: " `mappend` t swedishFormMessage (MsgInvalidEntry t) = "Invalid entry: " `mappend` t swedishFormMessage MsgInvalidTimeFormat = "Ogiltigt klockslag, måste vara på formatet HH:MM[:SS]"
Yesod/Form/Input.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+ -- | Provides for getting input from either GET or POST params without -- generating HTML forms. For more information, see: -- <http://www.yesodweb.com/book/forms#forms_kinds_of_forms>.@@ -15,7 +16,6 @@ import Yesod.Form.Types import Data.Text (Text)-import Control.Applicative (Applicative (..)) import Yesod.Core import Control.Monad (liftM, (<=<)) import qualified Data.Map as Map@@ -29,7 +29,7 @@ newtype FormInput m a = FormInput { unFormInput :: HandlerSite m -> [Text] -> Env -> FileEnv -> m (Either DText a) } instance Monad m => Functor (FormInput m) where fmap a (FormInput f) = FormInput $ \c d e e' -> liftM (either Left (Right . a)) $ f c d e e'-instance Monad m => Control.Applicative.Applicative (FormInput m) where+instance Monad m => Applicative (FormInput m) where pure = FormInput . const . const . const . const . return . Right (FormInput f) <*> (FormInput x) = FormInput $ \c d e e' -> do res1 <- f c d e e'
Yesod/Form/Jquery.hs view
@@ -1,7 +1,9 @@-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+ -- | Some fields spiced up with jQuery UI. module Yesod.Form.Jquery ( YesodJquery (..)@@ -20,11 +22,10 @@ import Data.Default import Text.Julius (rawJS) import Data.Text (Text, pack, unpack)-import Data.Monoid (mconcat) -- | Gets the Google hosted jQuery UI 1.8 CSS file with the given theme. googleHostedJqueryUiCss :: Text -> Text-googleHostedJqueryUiCss theme = Data.Monoid.mconcat+googleHostedJqueryUiCss theme = mconcat [ "//ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/" , theme , "/jquery-ui.css"
Yesod/Form/MassInput.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE TypeOperators #-}+ -- | A module providing a means of creating multiple input forms, such as a -- list of 0 or more recipients. module Yesod.Form.MassInput
Yesod/Form/Nic.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+ -- | Provide the user with a rich text editor. -- -- According to NIC editor homepage it is not actively maintained since June
Yesod/Form/Types.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE CPP #-}+{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}+ module Yesod.Form.Types ( -- * Helpers Enctype (..)@@ -25,18 +26,16 @@ import Control.Monad.Trans.RWS (RWST) import Control.Monad.Trans.Writer (WriterT) import Data.Text (Text)-import Data.Monoid (Monoid (..)) import Text.Blaze (Markup, ToMarkup (toMarkup), ToValue (toValue)) #define Html Markup #define ToHtml ToMarkup #define toHtml toMarkup-import Control.Applicative ((<$>), Alternative (..), Applicative (..))+import Control.Applicative (Alternative (..)) import Control.Monad (liftM) import Control.Monad.Trans.Class import Data.String (IsString (..)) import Yesod.Core import qualified Data.Map as Map-import Data.Semigroup (Semigroup, (<>)) import Data.Traversable import Data.Foldable @@ -55,18 +54,18 @@ fmap _ FormMissing = FormMissing fmap _ (FormFailure errs) = FormFailure errs fmap f (FormSuccess a) = FormSuccess $ f a-instance Control.Applicative.Applicative FormResult where+instance Applicative FormResult where pure = FormSuccess (FormSuccess f) <*> (FormSuccess g) = FormSuccess $ f g (FormFailure x) <*> (FormFailure y) = FormFailure $ x ++ y (FormFailure x) <*> _ = FormFailure x _ <*> (FormFailure y) = FormFailure y _ <*> _ = FormMissing-instance Data.Monoid.Monoid m => Monoid (FormResult m) where+instance Monoid m => Monoid (FormResult m) where mempty = pure mempty- mappend x y = mappend <$> x <*> y+ mappend = (<>) instance Semigroup m => Semigroup (FormResult m) where- x <> y = (<>) Control.Applicative.<$> x <*> y+ x <> y = (<>) <$> x <*> y -- | @since 1.4.5 instance Data.Foldable.Foldable FormResult where@@ -104,9 +103,6 @@ toValue Multipart = "multipart/form-data" instance Monoid Enctype where mempty = UrlEncoded-#if !(MIN_VERSION_base(4,11,0))- mappend = (<>)-#endif instance Semigroup Enctype where UrlEncoded <> UrlEncoded = UrlEncoded _ <> _ = Multipart@@ -172,7 +168,7 @@ (AForm f) >>= k = AForm $ \mr env ints -> do (a, b, ints', c) <- f mr env ints case a of- FormSuccess r -> do + FormSuccess r -> do (x, y, ints'', z) <- unAForm (k r) mr env ints' return (x, b . y, ints'', c `mappend` z) FormFailure err -> pure (FormFailure err, b, ints', c)@@ -180,7 +176,7 @@ #endif instance (Monad m, Monoid a) => Monoid (AForm m a) where mempty = pure mempty- mappend a b = mappend <$> a <*> b+ mappend = (<>) instance (Monad m, Semigroup a) => Semigroup (AForm m a) where a <> b = (<>) <$> a <*> b
yesod-form.cabal view
@@ -1,6 +1,6 @@ cabal-version: >= 1.10 name: yesod-form-version: 1.7.9+version: 1.7.9.2 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -20,7 +20,7 @@ library default-language: Haskell2010- build-depends: base >= 4.10 && < 5+ build-depends: base >= 4.11 && < 5 , aeson , attoparsec >= 0.10 , blaze-builder >= 0.2.1.4