packages feed

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

{-# LANGUAGE OverloadedStrings #-}
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 BSL
import qualified Data.ByteString.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
  BS.putStrLn $ niceName name
  BSL.putStrLn $ pretty debugPPOpts def
  putStrLn ""

niceName (Name n (Just (pkg, m))) =
  BS.concat [pkg, ":", m, ".", n]
niceName (Name n _) =
  n