yesod-form 1.4.10 → 1.4.11
raw patch · 20 files changed
+46/−50 lines, 20 filesdep ~persistent
Dependency ranges changed: persistent
Files
- ChangeLog.md +6/−0
- Yesod/Form/Fields.hs +10/−14
- Yesod/Form/Functions.hs +5/−8
- Yesod/Form/I18n/Czech.hs +1/−1
- Yesod/Form/I18n/Dutch.hs +1/−1
- Yesod/Form/I18n/English.hs +1/−1
- Yesod/Form/I18n/French.hs +1/−1
- Yesod/Form/I18n/German.hs +1/−1
- Yesod/Form/I18n/Japanese.hs +1/−1
- Yesod/Form/I18n/Norwegian.hs +1/−1
- Yesod/Form/I18n/Portuguese.hs +1/−1
- Yesod/Form/I18n/Russian.hs +1/−1
- Yesod/Form/I18n/Spanish.hs +1/−1
- Yesod/Form/I18n/Swedish.hs +1/−1
- Yesod/Form/Input.hs +1/−1
- Yesod/Form/Jquery.hs +2/−3
- Yesod/Form/MassInput.hs +3/−4
- Yesod/Form/Nic.hs +1/−2
- Yesod/Form/Types.hs +6/−6
- yesod-form.cabal +1/−1
ChangeLog.md view
@@ -1,3 +1,9 @@+## 1.4.11++* Fix warnings+* Fixed spelling errors and wording for `Yesod.Form.Functions.convertField`'s+ documentation+ ## 1.4.10 * Fixed `identifyForm` to properly return `FormMissing` for empty forms. [#1072](https://github.com/yesodweb/yesod/issues/1072)
Yesod/Form/Fields.hs view
@@ -63,12 +63,10 @@ import Yesod.Form.I18n.English import Yesod.Form.Functions (parseHelper) import Yesod.Core-import Text.Hamlet import Text.Blaze (ToMarkup (toMarkup), unsafeByteString) #define ToHtml ToMarkup #define toHtml toMarkup #define preEscapedText preEscapedToMarkup-import Text.Cassius import Data.Time (Day, TimeOfDay(..)) import qualified Text.Email.Validate as Email import Data.Text.Encoding (encodeUtf8, decodeUtf8With)@@ -88,7 +86,6 @@ import qualified Blaze.ByteString.Builder.Html.Utf8 as B import Blaze.ByteString.Builder (writeByteString, toLazyByteString) import Blaze.ByteString.Builder.Internal.Write (fromWriteList)-import Database.Persist (PersistEntityBackend) import Text.Blaze.Html.Renderer.String (renderHtml) import qualified Data.ByteString as S@@ -96,11 +93,11 @@ import Data.Text as T ( Text, append, concat, cons, head , intercalate, isPrefixOf, null, unpack, pack, splitOn )-import qualified Data.Text as T (drop, dropWhile) +import qualified Data.Text as T (drop, dropWhile) import qualified Data.Text.Read import qualified Data.Map as Map-import Yesod.Persist (selectList, runDB, Filter, SelectOpt, Key, YesodPersist, PersistEntity, PersistQuery)+import Yesod.Persist (selectList, Filter, SelectOpt, Key) import Control.Arrow ((&&&)) import Control.Applicative ((<$>), (<|>))@@ -323,7 +320,7 @@ where hour = do x <- digit- y <- (return <$> digit) <|> return []+ y <- (return Control.Applicative.<$> digit) <|> return [] let xy = x : y let i = read xy if i < 0 || i >= 24@@ -442,13 +439,13 @@ |]) -- inside -- | Creates a @\<select>@ tag for selecting multiple options.-multiSelectFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)+multiSelectFieldList :: (Eq a, RenderMessage site msg) => [(msg, a)] -> Field (HandlerT site IO) [a] multiSelectFieldList = multiSelectField . optionsPairs -- | Creates a @\<select>@ tag for selecting multiple options.-multiSelectField :: (Eq a, RenderMessage site FormMessage)+multiSelectField :: Eq a => HandlerT site IO (OptionList a) -> Field (HandlerT site IO) [a] multiSelectField ioptlist =@@ -480,17 +477,17 @@ radioFieldList = radioField . optionsPairs -- | Creates an input with @type="checkbox"@ for selecting multiple options.-checkboxesFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg) => [(msg, a)]+checkboxesFieldList :: (Eq a, RenderMessage site msg) => [(msg, a)] -> Field (HandlerT site IO) [a] checkboxesFieldList = checkboxesField . optionsPairs -- | Creates an input with @type="checkbox"@ for selecting multiple options.-checkboxesField :: (Eq a, RenderMessage site FormMessage)+checkboxesField :: Eq a => HandlerT site IO (OptionList a) -> Field (HandlerT site IO) [a] checkboxesField ioptlist = (multiSelectField ioptlist) { fieldView =- \theId name attrs val isReq -> do+ \theId name attrs val _isReq -> do opts <- fmap olOptions $ handlerToWidget ioptlist let optselected (Left _) _ = False optselected (Right vals) opt = (optionInternalValue opt) `elem` vals@@ -572,7 +569,7 @@ -- -- Note that this makes the field always optional. ---checkBoxField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool+checkBoxField :: Monad m => Field m Bool checkBoxField = Field { fieldParse = \e _ -> return $ checkBoxParser e , fieldView = \theId name attrs val _ -> [whamlet|@@ -760,7 +757,7 @@ Just y -> Right $ Just y -- | Creates an input with @type="file"@.-fileField :: (Monad m, RenderMessage (HandlerSite m) FormMessage)+fileField :: Monad m => Field m FileInfo fileField = Field { fieldParse = \_ files -> return $@@ -806,7 +803,6 @@ return (res, (fv :), ints', Multipart) fileAFormOpt :: MonadHandler m- => RenderMessage (HandlerSite m) FormMessage => FieldSettings (HandlerSite m) -> AForm m (Maybe FileInfo) fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
Yesod/Form/Functions.hs view
@@ -59,9 +59,7 @@ #define Html Markup #define toHtml toMarkup import Yesod.Core-import Yesod.Core.Handler (defaultCsrfParamName) import Network.Wai (requestMethod)-import Text.Hamlet (shamlet) import Data.Monoid (mempty, (<>)) import Data.Maybe (listToMaybe, fromMaybe) import qualified Data.Map as Map@@ -217,7 +215,7 @@ let tokenKey = defaultCsrfParamName let token = case reqToken req of- Nothing -> mempty+ Nothing -> Data.Monoid.mempty Just n -> [shamlet|<input type=hidden name=#{tokenKey} value=#{n}>|] m <- getYesod langs <- languages@@ -245,8 +243,7 @@ -> m (xml, Enctype) generateFormPost form = first snd `liftM` postHelper form Nothing -postEnv :: (MonadHandler m, MonadResource m)- => m (Maybe (Env, FileEnv))+postEnv :: MonadHandler m => m (Maybe (Env, FileEnv)) postEnv = do req <- getRequest if requestMethod (reqWaiRequest req) == "GET"@@ -281,7 +278,7 @@ -- -- Since 1.3.11 generateFormGet'- :: (RenderMessage (HandlerSite m) FormMessage, MonadHandler m)+ :: MonadHandler m => (Html -> MForm m (FormResult a, xml)) -> m (xml, Enctype) generateFormGet' form = first snd `liftM` getHelper form Nothing@@ -537,8 +534,8 @@ -- | Since a 'Field' cannot be a 'Functor', it is not obvious how to "reuse" a Field -- on a @newtype@ or otherwise equivalent type. This function allows you to convert--- a @Field m a@ to a @Field m b@ assuming you provide a bidireccional--- convertion among the two, through the first two functions.+-- a @Field m a@ to a @Field m b@ assuming you provide a bidirectional+-- conversion between the two, through the first two functions. -- -- A simple example: --
Yesod/Form/I18n/Czech.hs view
@@ -6,7 +6,7 @@ import Data.Text (Text) czechFormMessage :: FormMessage -> Text-czechFormMessage (MsgInvalidInteger t) = "Neplatné celé číslo: " `mappend` t+czechFormMessage (MsgInvalidInteger t) = "Neplatné celé číslo: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) dutchFormMessage :: FormMessage -> Text-dutchFormMessage (MsgInvalidInteger t) = "Ongeldig aantal: " `mappend` t+dutchFormMessage (MsgInvalidInteger t) = "Ongeldig aantal: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) englishFormMessage :: FormMessage -> Text-englishFormMessage (MsgInvalidInteger t) = "Invalid integer: " `mappend` t+englishFormMessage (MsgInvalidInteger t) = "Invalid integer: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) frenchFormMessage :: FormMessage -> Text-frenchFormMessage (MsgInvalidInteger t) = "Entier invalide : " `mappend` t+frenchFormMessage (MsgInvalidInteger t) = "Entier invalide : " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) germanFormMessage :: FormMessage -> Text-germanFormMessage (MsgInvalidInteger t) = "Ungültige Ganzzahl: " `mappend` t+germanFormMessage (MsgInvalidInteger t) = "Ungültige Ganzzahl: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) japaneseFormMessage :: FormMessage -> Text-japaneseFormMessage (MsgInvalidInteger t) = "無効な整数です: " `mappend` t+japaneseFormMessage (MsgInvalidInteger t) = "無効な整数です: " `Data.Monoid.mappend` t japaneseFormMessage (MsgInvalidNumber t) = "無効な数値です: " `mappend` t japaneseFormMessage (MsgInvalidEntry t) = "無効な入力です: " `mappend` t japaneseFormMessage MsgInvalidTimeFormat = "無効な時刻です。HH:MM[:SS]フォーマットで入力してください"
Yesod/Form/I18n/Norwegian.hs view
@@ -6,7 +6,7 @@ import Data.Text (Text) norwegianBokmålFormMessage :: FormMessage -> Text-norwegianBokmålFormMessage (MsgInvalidInteger t) = "Ugyldig antall: " `mappend` t+norwegianBokmålFormMessage (MsgInvalidInteger t) = "Ugyldig antall: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) portugueseFormMessage :: FormMessage -> Text-portugueseFormMessage (MsgInvalidInteger t) = "Número inteiro inválido: " `mappend` t+portugueseFormMessage (MsgInvalidInteger t) = "Número inteiro inválido: " `Data.Monoid.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/Russian.hs view
@@ -6,7 +6,7 @@ import Data.Text (Text) russianFormMessage :: FormMessage -> Text-russianFormMessage (MsgInvalidInteger t) = "Неверно записано целое число: " `mappend` t+russianFormMessage (MsgInvalidInteger t) = "Неверно записано целое число: " `Data.Monoid.mappend` t russianFormMessage (MsgInvalidNumber t) = "Неверный формат числа: " `mappend` t russianFormMessage (MsgInvalidEntry t) = "Неверный выбор: " `mappend` t russianFormMessage MsgInvalidTimeFormat = "Неверно указано время, используйте формат ЧЧ:ММ[:СС]"
Yesod/Form/I18n/Spanish.hs view
@@ -7,7 +7,7 @@ import Data.Text (Text) spanishFormMessage :: FormMessage -> Text-spanishFormMessage (MsgInvalidInteger t) = "Número entero inválido: " `mappend` t+spanishFormMessage (MsgInvalidInteger t) = "Número entero inválido: " `Data.Monoid.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
@@ -6,7 +6,7 @@ import Data.Text (Text) swedishFormMessage :: FormMessage -> Text-swedishFormMessage (MsgInvalidInteger t) = "Ogiltigt antal: " `mappend` t+swedishFormMessage (MsgInvalidInteger t) = "Ogiltigt antal: " `Data.Monoid.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
@@ -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 => Applicative (FormInput m) where+instance Monad m => Control.Applicative.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
@@ -18,14 +18,13 @@ import Yesod.Form import Data.Time (Day) import Data.Default-import Text.Hamlet (shamlet)-import Text.Julius (julius, rawJS)+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 = mconcat+googleHostedJqueryUiCss theme = Data.Monoid.mconcat [ "//ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/" , theme , "/jquery-ui.css"
Yesod/Form/MassInput.hs view
@@ -44,7 +44,7 @@ -- | Generate a form that accepts 0 or more values from the user, allowing the -- user to specify that a new row is necessary.-inputList :: (m ~ HandlerT site IO, xml ~ WidgetT site IO (), RenderMessage site FormMessage)+inputList :: (xml ~ WidgetT site IO (), RenderMessage site FormMessage) => Html -- ^ label for the form -> ([[FieldView site]] -> xml)@@ -119,14 +119,13 @@ up 1 return res -fixme :: (xml ~ WidgetT site IO ())- => [Either xml (FormResult a, [FieldView site])]+fixme :: [Either xml (FormResult a, [FieldView site])] -> (FormResult [a], [xml], [[FieldView site]]) fixme eithers = (res, xmls, map snd rest) where (xmls, rest) = partitionEithers eithers- res = sequenceA $ map fst rest+ res = Data.Traversable.sequenceA $ map fst rest massDivs, massTable :: [[FieldView site]]
Yesod/Form/Nic.hs view
@@ -19,8 +19,7 @@ import Yesod.Core import Yesod.Form import Text.HTML.SanitizeXSS (sanitizeBalance)-import Text.Hamlet (shamlet)-import Text.Julius (julius, rawJS)+import Text.Julius (rawJS) import Text.Blaze.Html.Renderer.String (renderHtml) import Data.Text (Text, pack) import Data.Maybe (listToMaybe)
Yesod/Form/Types.hs view
@@ -51,28 +51,28 @@ fmap _ FormMissing = FormMissing fmap _ (FormFailure errs) = FormFailure errs fmap f (FormSuccess a) = FormSuccess $ f a-instance Applicative FormResult where+instance Control.Applicative.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 Monoid m => Monoid (FormResult m) where+instance Data.Monoid.Monoid m => Monoid (FormResult m) where mempty = pure mempty mappend x y = mappend <$> x <*> y instance Semigroup m => Semigroup (FormResult m) where- x <> y = (<>) <$> x <*> y+ x <> y = (<>) Control.Applicative.<$> x <*> y -- | @since 1.4.5-instance Foldable FormResult where+instance Data.Foldable.Foldable FormResult where foldMap f r = case r of FormSuccess a -> f a- FormFailure errs -> mempty+ FormFailure _errs -> mempty FormMissing -> mempty -- | @since 1.4.5-instance Traversable FormResult where+instance Data.Traversable.Traversable FormResult where traverse f r = case r of FormSuccess a -> fmap FormSuccess (f a) FormFailure errs -> pure (FormFailure errs)
yesod-form.cabal view
@@ -1,5 +1,5 @@ name: yesod-form-version: 1.4.10+version: 1.4.11 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>