module Distribution.Types.Mixin (
Mixin(..),
) where
import Distribution.Compat.Prelude
import Prelude ()
import Text.PrettyPrint ((<+>))
import Distribution.Parsec.Class
import Distribution.Pretty
import Distribution.Text
import Distribution.Types.IncludeRenaming
import Distribution.Types.PackageName
import qualified Distribution.Compat.CharParsing as P
import qualified Distribution.Compat.ReadP as Parse
data Mixin = Mixin { mixinPackageName :: PackageName
, mixinIncludeRenaming :: IncludeRenaming }
deriving (Show, Read, Eq, Ord, Typeable, Data, Generic)
instance Binary Mixin
instance NFData Mixin where rnf = genericRnf
instance Pretty Mixin where
pretty (Mixin pkg_name incl) = pretty pkg_name <+> pretty incl
instance Parsec Mixin where
parsec = do
mod_name <- parsec
P.spaces
incl <- parsec
return (Mixin mod_name incl)
instance Text Mixin where
parse = do
pkg_name <- parse
Parse.skipSpaces
incl <- parse
return (Mixin pkg_name incl)