yesod-dsl 0.1.1.14 → 0.1.1.15
raw patch · 2 files changed
+31/−1 lines, 2 files
Files
- Generator/EntityFactories.hs +29/−0
- yesod-dsl.cabal +2/−1
+ Generator/EntityFactories.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE OverloadedStrings #-}+module Generator.EntityFactories where+import AST+import Data.Maybe+import qualified Data.Text as T+import Data.List+import Text.Shakespeare.Text hiding (toText)+import Generator.Common++entityFactory :: Entity -> String+entityFactory e = T.unpack $(codegenFile "codegen/entity-factory.cg")+ where requiredFields = [ f | f <- entityFields e, + fieldOptional f == False, + isNothing $ fieldDefault f ]+ defaultFields = (entityFields e) \\ requiredFields+ fieldParamName f = fieldName f ++ "_"+ fieldSetter f = entityFieldName e f ++ " = " ++ value f+ value f + | f `elem` requiredFields = fieldParamName f+ | fieldOptional f = "Nothing"+ | otherwise = case fieldDefault f of+ Just fv -> fieldValueToHs fv+ Nothing -> error "missing default value in entityFactory"++entityFactories :: Module -> String+entityFactories m = concatMap entityFactory (modEntities m)++
yesod-dsl.cabal view
@@ -1,5 +1,5 @@ name: yesod-dsl-version: 0.1.1.14+version: 0.1.1.15 license: BSD3 license-file: LICENSE author: Tero Laitinen @@ -44,6 +44,7 @@ Generator.Cabal Generator.EsqueletoInstances Generator.Fay+ Generator.EntityFactories Obfuscate SyncFile ExpandMacros