{-# LANGUAGE PatternSynonyms #-}
module Language.Drasil.Code.PackageData (PackageData(packageProg, packageAux),
pattern PackageData, package
) where
import Drasil.FileHandling (FileLayout)
import Drasil.GOOL (ProgData, onCodeList)
data PackageData = PackD {PackageData -> ProgData
packageProg :: ProgData, PackageData -> [FileLayout]
packageAux :: [FileLayout]}
pattern PackageData :: ProgData -> [FileLayout] -> PackageData
pattern $mPackageData :: forall {r}.
PackageData -> (ProgData -> [FileLayout] -> r) -> ((# #) -> r) -> r
$bPackageData :: ProgData -> [FileLayout] -> PackageData
PackageData prog aux <- PackD prog aux
where
PackageData ProgData
prog [FileLayout]
aux = ProgData -> [FileLayout] -> PackageData
PackD ProgData
prog [FileLayout]
aux
{-# COMPLETE PackageData #-}
package :: (Monad r) => ProgData -> [r FileLayout] -> r PackageData
package :: forall (r :: * -> *).
Monad r =>
ProgData -> [r FileLayout] -> r PackageData
package ProgData
p = ([FileLayout] -> PackageData) -> [r FileLayout] -> r PackageData
forall (m :: * -> *) a b. Monad m => ([a] -> b) -> [m a] -> m b
onCodeList (ProgData -> [FileLayout] -> PackageData
PackageData ProgData
p)