hscolour-1.6: HsColour.hs
module Main where
import Language.Haskell.HsColour
import Language.Haskell.HsColour.Colourise (readColourPrefs)
import System
import IO (hPutStrLn,hFlush,stdout,stderr,hSetBuffering,BufferMode(..))
version = "1.6"
main :: IO ()
main = do
prog <- System.getProgName
args <- System.getArgs
pref <- readColourPrefs
(ioWrapper,output,anchors) <- case args of
[] -> errorOut (help prog)
["-h"] -> errorOut (help prog)
["-help"] -> errorOut (help prog)
["--help"] -> errorOut (help prog)
["-v"] -> errorOut (prog++" "++version)
["-version"] -> errorOut (prog++" "++version)
["--version"] -> errorOut (prog++" "++version)
["-tty"] -> return (ttyInteract, TTY, False)
["-html"] -> return (ttyInteract, HTML, False)
["-css"] -> return (ttyInteract, CSS, False)
["-latex"] -> return (ttyInteract, LaTeX,False)
["-anchorHTML"] -> return (ttyInteract, HTML, True)
["-anchorCSS"] -> return (ttyInteract, CSS, True)
[a] -> return (fileInteract a, TTY, False)
["-tty",a] -> return (fileInteract a, TTY, False)
["-html",a] -> return (fileInteract a, HTML, False)
["-css",a] -> return (fileInteract a, CSS, False)
["-latex",a] -> return (fileInteract a, LaTeX,False)
["-anchorHTML",a] -> return (fileInteract a, HTML, True)
["-anchorCSS",a] -> return (fileInteract a, CSS, True)
_ -> errorOut (help prog)
ioWrapper (hscolour output pref anchors)
hFlush stdout
where
fileInteract f u = do readFile f >>= putStr . u
ttyInteract s = do hSetBuffering stdout NoBuffering >> Prelude.interact s
errorOut s = hPutStrLn stderr s >> hFlush stderr >> exitFailure
help p = "Usage: "++p++" [-tty|-html|-css|-latex|-anchorHTML|-anchorCSS] [file.hs]"