{- This program converts Haskell source to HTML. Apart from the Haskell source files, it requires the cross reference information produced by running tstModules xrefs on the complete program. -} import HsLexerPass1 import System(getArgs) import Unlit(readHaskellFile) import MUtils import RefsTypes import HLex2html import PathUtils(normf) -- fix the hard coded path? main = do args <- getArgs fms <- mapFst normf # (readIO =<< readFile "hi/ModuleSourceFiles.hv") case args of ["file",m] -> putStrLn . maybe "?" id . lookup m . map swap $ fms ["html",m] -> module2html m fms ["f2html",f] -> file2html (normf f) fms ["all2html"] -> all2html fms ["modules"] -> putStr . unlines . map (\(f,m)->m++" "++f) $ fms ["files"] -> putStr . unlines . map fst $ fms _ -> fail "Usage: hs2html (file | html | f2html | files | modules | all2html)" readl s = map read . lines $ s readModule = readRefs >#< lexHaskellFile readRefs :: Module -> IO Refs readRefs m = readl # readFile ("hi/"++m++".refs") lexHaskellFile f = lexerPass0 # readHaskellFile Nothing f all2html fms = mapM_ one2html fms where one2html (f,m) = writeFile h.hlex2html (f,fms)=< haskell2html (f, fms) (m, f) _ -> fail "Unknown module" file2html f fms = case [m|(f',m)<-fms,f'==f] of m:_ -> haskell2html (f, fms) (m,f) _ -> fail "Unknown source file" haskell2html ffm mf = putStrLn.hlex2html ffm=<