haskell-docs 4.2.0 → 4.2.1
raw patch · 3 files changed
+52/−38 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Haskell.Docs: searchAndPrintModules :: MonadIO m => Identifier -> m ()
Files
- haskell-docs.cabal +1/−1
- src/Haskell/Docs.hs +15/−6
- src/main/Main.hs +36/−31
haskell-docs.cabal view
@@ -1,5 +1,5 @@ name: haskell-docs-version: 4.2.0+version: 4.2.1 synopsis: A program to find and display the docs and type of a name description: Given a module name and a name, or just a name, it will find and display the documentation of that name.
src/Haskell/Docs.hs view
@@ -7,26 +7,25 @@ module Haskell.Docs (module Haskell.Docs ,Identifier(..)- ,PackageName(..))+ ,PackageName(..)+ ,searchAndPrintModules+ ,searchAndPrintDoc) where import Haskell.Docs.Formatting import Haskell.Docs.Haddock-import Haskell.Docs.Ghc import Haskell.Docs.Index import Haskell.Docs.Types -import Control.Arrow import Control.Exception import Control.Monad import qualified Data.HashMap.Strict as M import Data.List import Data.Ord-import qualified Data.Text.IO as T import Data.Text (pack,unpack)+import qualified Data.Text.IO as T import GHC hiding (verbosity)-import GhcMonad (liftIO)-import Module+import MonadUtils import Packages -- -- | Print the documentation of a name in the given module.@@ -75,3 +74,13 @@ then forM_ (concat (map snd (M.toList packages))) (\modu -> liftIO (T.putStrLn modu)) else searchAndPrintDoc' packagemap ms ss pname mname ident++searchAndPrintModules :: MonadIO m => Identifier -> m ()+searchAndPrintModules ident =+ do result <- liftIO (lookupIdent (pack (unIdentifier ident)))+ case result of+ Nothing ->+ throw NoFindModule+ Just packages ->+ forM_ (nub (concat (map snd (M.toList packages))))+ (\modu -> liftIO (T.putStrLn modu))
src/main/Main.hs view
@@ -29,37 +29,42 @@ -- | Do the printing. app :: [String] -> IO () app (extract -> x@(gs,ms,as,ss)) =- withInitializedPackages- gs- (\packages ->- catchErrors- (case as of- [name] ->- searchAndPrintDoc packages- ms- ss- Nothing- Nothing- (Identifier name)- [mname,name,pname] ->- searchAndPrintDoc packages- ms- ss- (Just (PackageName pname))- (Just (makeModuleName mname))- (Identifier name)- [mname,name] ->- searchAndPrintDoc packages- ms- ss- Nothing- (Just (makeModuleName mname))- (Identifier name)- _ -> bail "<module-name> <ident> [<package-name>] | <ident>\n\- \\n\- \Options: --g <ghc option> Specify GHC options.\n\- \ --sexp Output s-expressions.\n\- \ --modules Only output modules."))+ do if ms+ then case as of+ [name] -> searchAndPrintModules (Identifier name)+ [_,name,_] -> searchAndPrintModules (Identifier name)+ [_,name] -> searchAndPrintModules (Identifier name)+ else withInitializedPackages+ gs+ (\packages ->+ catchErrors+ (case as of+ [name] ->+ searchAndPrintDoc packages+ ms+ ss+ Nothing+ Nothing+ (Identifier name)+ [mname,name,pname] ->+ searchAndPrintDoc packages+ ms+ ss+ (Just (PackageName pname))+ (Just (makeModuleName mname))+ (Identifier name)+ [mname,name] ->+ searchAndPrintDoc packages+ ms+ ss+ Nothing+ (Just (makeModuleName mname))+ (Identifier name)+ _ -> bail "<module-name> <ident> [<package-name>] | <ident>\n\+ \\n\+ \Options: --g <ghc option> Specify GHC options.\n\+ \ --sexp Output s-expressions.\n\+ \ --modules Only output modules." )) -- | Extract arguments. extract :: [String] -> ([String],Bool,[String],Bool)