packages feed

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}