yesod-dsl 0.1.1.2 → 0.1.1.3
raw patch · 8 files changed
+21/−3 lines, 8 files
Files
- Generator/Models.hs +5/−0
- codegen/dispatch.cg +1/−0
- codegen/enum-parsejson.cg +1/−0
- codegen/enum-tojson.cg +1/−0
- codegen/enum.cg +9/−1
- codegen/enums-header.cg +2/−1
- codegen/handler-header.cg +1/−0
- yesod-dsl.cabal +1/−1
Generator/Models.hs view
@@ -29,8 +29,13 @@ enum e = T.unpack $(codegenFile "codegen/enum.cg") where fromPathPieces = concatMap fromPathPiece (enumValues e) toPathPieces = concatMap toPathPiece (enumValues e)+ parseJSONs = concatMap parseJSON (enumValues e)+ toJSONs = concatMap toJSON (enumValues e) fromPathPiece v = T.unpack $(codegenFile "codegen/enum-frompathpiece.cg") toPathPiece v = T.unpack $(codegenFile "codegen/enum-topathpiece.cg")+ parseJSON v = T.unpack $(codegenFile "codegen/enum-parsejson.cg")+ toJSON v = T.unpack $(codegenFile "codegen/enum-tojson.cg")+ modelField :: Field -> String modelField f = T.unpack $(codegenFile "codegen/model-field.cg")
codegen/dispatch.cg view
@@ -22,5 +22,6 @@ instance (YesodAuthPersist master, ~{moduleName m}Validation master,+ KeyEntity (AuthId master) ~ User, YesodPersistBackend master ~ SqlPersistT) => YesodSubDispatch ~{moduleName m} (HandlerT master IO) where yesodSubDispatch = $(mkYesodSubDispatch resources~{moduleName m})
+ codegen/enum-parsejson.cg view
@@ -0,0 +1,1 @@+ "~{v}" -> return ~{v}
+ codegen/enum-tojson.cg view
@@ -0,0 +1,1 @@+ toJSON ~{v} = A.String "~{v}"
codegen/enum.cg view
@@ -1,8 +1,16 @@ data ~{enumName e} = ~{intercalate " | " (enumValues e)} deriving (Show, Read, Eq) derivePersistField "~{enumName e}"-deriveJSON id ''~{enumName e} +instance A.FromJSON ~{enumName e} where+ parseJSON = A.withText "~{enumName e}" (\v -> case v of+~{parseJSONs} _ -> mzero)++instance A.ToJSON ~{enumName e} where+~{toJSONs}+ instance PathPiece ~{enumName e} where ~{fromPathPieces} fromPathPiece _ = Nothing ~{toPathPieces}++
codegen/enums-header.cg view
@@ -1,6 +1,7 @@ {-# LANGUAGE TemplateHaskell #-} module Handler.~{moduleName m}.Enums where import Database.Persist.TH-import Data.Aeson.TH+import qualified Data.Aeson as A import Prelude import Web.PathPieces+import Control.Monad (mzero)
codegen/handler-header.cg view
@@ -1,5 +1,6 @@ ~{hsHandlerMethod ht}~{hsRouteName (routePath r)} :: forall master. (~{moduleName m}Validation master, YesodAuthPersist master,+ KeyEntity (AuthId master) ~ User, YesodPersistBackend master ~ SqlPersistT) => ~{hsRouteType (routePath r)}HandlerT ~{moduleName m} (HandlerT master IO) A.Value ~{hsHandlerMethod ht}~{hsRouteName (routePath r)} ~{hsRouteParams (routePath r)} = do
yesod-dsl.cabal view
@@ -1,5 +1,5 @@ name: yesod-dsl-version: 0.1.1.2+version: 0.1.1.3 license: BSD3 license-file: LICENSE author: Tero Laitinen