packages feed

ghc-mod-0.4.0: Browse.hs

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 . validate <$> browse mdlName
  where
    validate = sort . filter (isAlpha.head)

browse :: String -> IO [String]
browse mdlName = withGHC $ do
    initSession0
    maybeNamesToStrings <$> lookupModuleInfo
  where
    lookupModuleInfo = findModule (mkModuleName mdlName) Nothing >>= getModuleInfo
    maybeNamesToStrings = maybe [] (map getOccString . modInfoExports)