{-# Language NoMonomorphismRestriction #-} module Types.Field ( Field(..) , FieldVal(..) , extensions , rexpModules , flibOptions , file , flibType , fieldName , spaces , commas , toolDepends , oldToolDepends , pcDepends , buildDeps , modules , module_ , mixins_ , desc , version , cabalVersion , longList , testedField , licenseField , dependencies , nonEmpty , stringField , ffilter ) where import Distribution.Compiler import Distribution.License import Distribution.ModuleName import Distribution.Types.Dependency import Distribution.Types.ExeDependency import Distribution.Types.ForeignLibOption import Distribution.Types.ForeignLibType import Distribution.Types.LegacyExeDependency import Distribution.Types.Mixin import Distribution.Types.ModuleReexport import Distribution.Types.PkgconfigDependency import Distribution.Version import Language.Haskell.Extension data FieldVal = Dependencies [Dependency] | Version Version | CabalVersion Version | License License | Str String | File String | Spaces [String] | Commas [String] | LongList [String] | Extensions [Extension] | Modules [ModuleName] | Module ModuleName | RexpModules [ModuleReexport] | TestedWith [(CompilerFlavor, VersionRange)] | ToolDepends [ExeDependency] | OldToolDepends [LegacyExeDependency] | PcDepends [PkgconfigDependency] | Mixins [Mixin] | FlibType ForeignLibType | FlibOptions [ForeignLibOption] deriving (Show) data Field = Description String | Field String FieldVal deriving (Show) flibType n p = Just $ Field n (FlibType p) flibOptions n p = Just $ Field n (FlibOptions p) toolDepends n as = Just $ Field n (ToolDepends as) oldToolDepends n as = Just $ Field n (OldToolDepends as) pcDepends n as = Just $ Field n (PcDepends as) rexpModules n as = Just $ Field n (RexpModules as) mixins_ n as = Just $ Field n (Mixins as) dependencies n as = Just $ Field n (Dependencies as) licenseField n a = Just $ Field n (License a) file n a = Just $ Field n (File a) spaces n as = Just $ Field n (Spaces as) commas n as = Just $ Field n (Commas as) longList n as = Just $ Field n (LongList as) extensions n as = Just $ Field n (Extensions as) version n a = Just $ Field n (Version a) cabalVersion n a = Just $ Field n (CabalVersion a) modules n as = Just $ Field n (Modules as) module_ n a = Just $ Field n (Module a) testedField n a = Just $ Field n (TestedWith a) ffilter f g as | not (f as) = Nothing | otherwise = g as nonEmpty = ffilter (not . null) fieldName (Field s _) = s fieldName (Description _) = "description" desc [] = Nothing desc vs = Just (Description vs) buildDeps [] = Nothing buildDeps vs = dependencies "build-depends" vs stringField n p = Just (Field n (Str p))