module Main where import System.Environment import Haste.Module import Haste.Config import Data.JSTarget import Data.JSTarget.PP import Data.Maybe import qualified Data.Map as M import qualified Data.ByteString.Lazy.Char8 as BS main = do as <- getArgs if null as then putStrLn "Usage: haste-cat package-id:Module.To.Inspect" else mapM_ printModule as printModule mpkg = do let (pkg, (_:m)) = break (== ':') mpkg mods <- mapM (\p -> readModule p pkg m) ("." : libPaths def) mapM_ printDefs . map fromJust $ filter isJust mods printDefs mod = do mapM_ printDef $ M.toList $ modDefs mod printDef (name, def) = do putStrLn $ niceName name BS.putStrLn $ pretty debugPPOpts def putStrLn "" niceName (Name n (Just (pkg, m))) = pkg ++ ":" ++ m ++ "." ++ n niceName (Name n _) = n