module HsDev.Display (
Display(..)
) where
import Control.Lens (view)
import Data.Maybe (fromMaybe)
import Text.Format
import HsDev.PackageDb
import HsDev.Project
import HsDev.Sandbox
import HsDev.Symbols.Location
class Display a where
display :: a -> String
displayType :: a -> String
instance Display PackageDb where
display GlobalDb = "global-db"
display UserDb = "user-db"
display (PackageDb p) = "package-db " ++ p
displayType _ = "package-db"
instance Display ModuleLocation where
display (FileModule f _) = f
display (InstalledModule _ _ n) = n
display (ModuleSource s) = fromMaybe "" s
displayType _ = "module"
instance Display Project where
display = view projectName
displayType _ = "project"
instance Display Sandbox where
display (Sandbox _ fpath) = fpath
displayType (Sandbox CabalSandbox _) = "cabal-sandbox"
displayType (Sandbox StackWork _) = "stack-work"
instance Display FilePath where
display = id
displayType _ = "path"
instance FormatBuild PackageDb where
formatBuild = formatBuild . display
instance FormatBuild ModuleLocation where
formatBuild = formatBuild . display
instance FormatBuild Project where
formatBuild = formatBuild . display