packages feed

haste-compiler-0.4.3: src/haste-cat.hs

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