enums in packages are expanded in place

This commit is contained in:
Zachary Snow 2020-06-19 00:41:02 -04:00
parent 661703a8c2
commit 369af00137
1 changed files with 10 additions and 3 deletions

View File

@ -33,13 +33,20 @@ convert :: [AST] -> [AST]
convert = map $ concatMap convertDescription
convertDescription :: Description -> [Description]
convertDescription (description @ Package{}) =
[Package ml name (items ++ enumItems)]
where (Package ml name items, enumItems) = convertDescription' description
convertDescription (Package ml name items) =
[Package ml name $ concatMap convertPackageItem items]
convertDescription description =
(map PackageItem enumItems) ++ [description']
where (description', enumItems) = convertDescription' description
-- explode a package item with its corresponding enum items
convertPackageItem :: PackageItem -> [PackageItem]
convertPackageItem item = do
item' : enumItems
where
(PackageItem item', enumItems) =
convertDescription' $ PackageItem item
-- replace and collect the enum types in a description
convertDescription' :: Description -> (Description, [PackageItem])
convertDescription' description =