{-# LANGUAGE Rank2Types #-} -- Copyright (c) Krasimir Angelov 2008. -- -- Extraction of the "Project View" from -- already configured Cabal package. -- module Shim.ProjectContent ( itemName , ProjectItem(..) , FileKind(..) , FolderKind(..) , ModuleKind(..) ) where import Distribution.ModuleName import Distribution.Version import Distribution.Package import Distribution.Text data ProjectItem = ProjectItem { projItemName :: String , itemVersion :: Version } | DependenciesItem { depItemName :: String } | FolderItem { folderItemName :: String , folderKind :: FolderKind } | FileItem { fileItemName :: String , itemFPath :: FilePath , fileKind :: FileKind } | PackageItem { pkgItemName :: PackageName , itemVersion:: Version } | ModuleItem { modItemName :: ModuleName , itemFPath :: FilePath , moduleKind :: ModuleKind } deriving (Eq, Ord, Show) itemName :: ProjectItem -> String itemName ProjectItem {projItemName = n} = n itemName DependenciesItem {depItemName = n} = n itemName FolderItem {folderItemName = n} = n itemName FileItem {fileItemName = n} = n itemName PackageItem {pkgItemName = p} = display p itemName ModuleItem {modItemName = m} = display m data FileKind = HsSource ModuleKind | CSource | HSource | TextFile | SetupScript | LicenseText deriving (Eq, Ord, Show) data FolderKind = HsSourceFolder | PlainFolder deriving (Eq, Ord, Show) data ModuleKind = ExposedModule | HiddenModule deriving (Eq, Ord, Show)