cdp-0.0.1.0: gen/CDP/Gen/Deprecated.hs
-- | Module for filtering out deprecated things.
{-# LANGUAGE RecordWildCards #-}
module CDP.Gen.Deprecated
( removeDeprecated
) where
import CDP.Definition
removeDeprecated :: TopLevel -> TopLevel
removeDeprecated topLevel@TopLevel {..} = topLevel
{ topLevelDomains =
map goDomain . filter (not . domainDeprecated) $ topLevelDomains
}
where
goDomain domain@Domain {..} = domain
{ domainCommands = map goCommand $ filter (not . commandDeprecated) domainCommands
, domainTypes = map goType $ filter (not . typeDeprecated) domainTypes
, domainEvents = map goEvent $ filter (not . eventDeprecated) domainEvents
}
goCommand command@Command {..} = command
{ commandReturns = filter (not . propertyDeprecated) commandReturns
, commandParameters = filter (not . propertyDeprecated) commandParameters
}
goType ty@Type {..} = ty
{ typeProperties = filter (not . propertyDeprecated) <$> typeProperties
}
goEvent event@Event {..} = event
{ eventParameters = filter (not . propertyDeprecated) eventParameters
}