ghc-mod/Browse.hs
Takano Akio ad55168265 adding options: --package-conf and --no-user-package-conf
These command line options work just like the similar-named GHC flags.
They are useful when working with non-standard package databases.
2011-05-28 06:06:13 +09:00

32 lines
913 B
Haskell

module Browse (browseModule) where
import Control.Applicative
import Data.Char
import Data.List
import GHC
import Name
import Types
----------------------------------------------------------------
browseModule :: Options -> String -> IO String
browseModule opt mdlName = convert opt . format <$> browse opt mdlName
where
format
| operators opt = formatOps
| otherwise = removeOps
removeOps = sort . filter (isAlpha.head)
formatOps = sort . map formatOps'
formatOps' x@(s:_)
| isAlpha s = x
| otherwise = '(' : x ++ ")"
formatOps' [] = error "formatOps'"
browse :: Options -> String -> IO [String]
browse opt mdlName = withGHC $ do
initSession0 opt
maybeNamesToStrings <$> lookupModuleInfo
where
lookupModuleInfo = findModule (mkModuleName mdlName) Nothing >>= getModuleInfo
maybeNamesToStrings = maybe [] (map getOccString . modInfoExports)