yesod-dsl-0.2.1: codegen/purescript-enum.cg
data ~{enumName e} = ~{intercalate " | " $ map value $ enumValues e}
derive instance ~{lowerFirst $ enumName e}Generic :: Generic ~{enumName e}
instance show~{enumName e} :: Show ~{enumName e} where
~{indent 4 $ concatMap showValue $ enumValues e}
instance eq~{enumName e} :: Eq ~{enumName e} where
eq = gEq
instance ord~{enumName e} :: Ord ~{enumName e} where
compare = gCompare
instance decodeJson~{enumName e} :: DecodeJson ~{enumName e} where
decodeJson json = do
x <- decodeJson json
case x of
~{indent 12 $ intercalate "\n" $ map decodeValue $ enumValues e} _ -> Left $ "Invalid ~{enumName e} value: " ++ x
instance encodeJson~{enumName e} :: EncodeJson ~{enumName e} where
encodeJson x = encodeJson $ case x of
~{indent 8 $ concatMap encodeValue $ enumValues e}