hscolour 1.13 → 1.14
raw patch · 30 files changed
+458/−606 lines, 30 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Language.Haskell.HsColour.Options: Bird :: Literate
- Language.Haskell.HsColour.Options: NoLit :: Literate
- Language.Haskell.HsColour.Options: TeX :: Literate
- Language.Haskell.HsColour.Options: data Literate
- Language.Haskell.HsColour.Options: instance Eq Literate
+ Language.Haskell.HsColour.Colourise: defaultColourPrefs :: ColourPrefs
- Language.Haskell.HsColour: hscolour :: Output -> ColourPrefs -> Bool -> Bool -> Literate -> String -> String -> String
+ Language.Haskell.HsColour: hscolour :: Output -> ColourPrefs -> Bool -> Bool -> String -> Bool -> String -> String
- Language.Haskell.HsColour.Options: LHS :: Literate -> Option
+ Language.Haskell.HsColour.Options: LHS :: Bool -> Option
Files
- .hscolour +1/−1
- HsColour.hs +44/−29
- Language/Haskell/HsColour.hs +26/−28
- Language/Haskell/HsColour/Colourise.hs +1/−0
- Language/Haskell/HsColour/Options.hs +1/−4
- Makefile +1/−1
- README +4/−4
- docs/hscolour/Language-Haskell-HsColour-Options.html +2/−137
- docs/hscolour/Language-Haskell-HsColour.html +11/−12
- docs/hscolour/Language/Haskell/HsColour.html +94/−96
- docs/hscolour/Language/Haskell/HsColour/ANSI.html +13/−13
- docs/hscolour/Language/Haskell/HsColour/Anchors.html +39/−39
- docs/hscolour/Language/Haskell/HsColour/CSS.html +9/−9
- docs/hscolour/Language/Haskell/HsColour/Classify.html +18/−18
- docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html +3/−3
- docs/hscolour/Language/Haskell/HsColour/Colourise.html +76/−75
- docs/hscolour/Language/Haskell/HsColour/HTML.html +13/−13
- docs/hscolour/Language/Haskell/HsColour/InlineCSS.html +10/−10
- docs/hscolour/Language/Haskell/HsColour/LaTeX.html +18/−18
- docs/hscolour/Language/Haskell/HsColour/MIRC.html +8/−8
- docs/hscolour/Language/Haskell/HsColour/Options.html +16/−19
- docs/hscolour/Language/Haskell/HsColour/Output.html +7/−7
- docs/hscolour/Language/Haskell/HsColour/TTY.html +5/−5
- docs/hscolour/doc-index-B.html +0/−8
- docs/hscolour/doc-index-D.html +8/−0
- docs/hscolour/doc-index-L.html +0/−8
- docs/hscolour/doc-index-N.html +0/−8
- docs/hscolour/doc-index-T.html +0/−8
- hscolour.cabal +2/−2
- index.html +28/−23
.hscolour view
@@ -2,7 +2,7 @@ { keyword = [Underscore,Foreground Green] , keyglyph = [Foreground Red] , layout = [Foreground Cyan]- , comment = [Foreground Blue,Italic]+ , comment = [Foreground Blue] , conid = [Normal] , varid = [Normal] , conop = [Bold,Foreground Red]
HsColour.hs view
@@ -5,12 +5,12 @@ import Language.Haskell.HsColour.Colourise (readColourPrefs) import Language.Haskell.HsColour.Options import System-import IO (hPutStrLn,hFlush,stdout,stderr,hSetBuffering,BufferMode(..))+import IO import Monad (when)-import List (intersperse)+import List (intersperse, isSuffixOf) import Debug.Trace -version = "1.13"+version = "1.14" optionTable :: [(String,Option)] optionTable = [ ("help", Help)@@ -22,9 +22,9 @@ , ("tty", Format TTY) , ("latex", Format LaTeX) , ("mirc", Format MIRC)- , ("lit", LHS Bird)- , ("lit-tex",LHS TeX)- , ("nolit", LHS NoLit)+ , ("lit", LHS True)+ , ("lit-tex",LHS True)+ , ("nolit", LHS False) , ("anchor", Anchors True) , ("noanchor", Anchors False) , ("partial", Partial True)@@ -47,31 +47,41 @@ good = [ o | Right o <- options ] formats = [ f | Format f <- good ] outFile = [ f | Output f <- good ]- fileInteract = fileInteractOut outFile- output = useDefault TTY id formats- ioWrapper = useDefault ttyInteract fileInteract [ f | Input f <- good ]- anchors = useDefault False id [ b | Anchors b <- good ]- partial = useDefault False id [ b | Partial b <- good ]- lhs = useDefault NoLit id [ b | LHS b <- good ] - title = useDefault "Haskell code" id [ f | Input f <- good ]- when (not (null bad))- (errorOut ("Unrecognised option(s): "++unwords bad++"\n"++usage prog))- when (Help `elem` good) (do putStrLn (usage prog); exitSuccess)- when (Version `elem` good) (do putStrLn (prog++" "++version); exitSuccess)- when (Information `elem` good)- (do writeResult outFile cssDefaults; exitSuccess)- when (length formats > 1)- (errorOut ("Can only choose one output format at a time: "- ++unwords (map show formats)))- when (length outFile > 1)- (errorOut ("Can only have one output file at a time."))- ioWrapper (HSColour.hscolour output pref anchors partial lhs title)- hFlush stdout+ output = useDefault TTY id formats+ anchors = useDefault False id [ b | Anchors b <- good ]+ partial = useDefault False id [ b | Partial b <- good ]+ lhs = useDefault Nothing id [ Just b | LHS b<- good ]+ title = useDefault "Haskell code" id [ f | Input f <- good ]+ ioWrapper = useDefaults (ttyInteract outFile (guessLiterate lhs ""))+ (fileInteract outFile) [ (f,guessLiterate lhs f)+ | Input f <- good ]+ when (not (null bad)) $+ errorOut ("Unrecognised option(s): "++unwords bad++"\n"++usage prog)+ when (Help `elem` good) $ writeResult [] (usage prog)+ when (Version `elem` good) $ writeResult [] (prog++" "++version)+ when (Information `elem` good) $ writeResult outFile cssDefaults+ when (length formats > 1) $+ errorOut ("Can only choose one output format at a time: "+ ++unwords (map show formats))+ when (length outFile > 1) $+ errorOut ("Can only have one output file at a time.")+ ioWrapper (HSColour.hscolour output pref anchors partial title) where- writeResult outF = if null outF then putStr else writeFile (last outF)- fileInteractOut outF inF u = do readFile inF >>= writeResult outF . u- ttyInteract s = do hSetBuffering stdout NoBuffering >> Prelude.interact s+ writeResult outF s = do if null outF then putStr s+ else writeFile (last outF) s+ exitSuccess+ fileInteract out inFs u = do h <- case out of+ [] -> return stdout+ [outF] -> openFile outF WriteMode+ mapM_ (\ (f,lit)->+ readFile f >>= hPutStr h . u lit)+ inFs+ hClose h+ ttyInteract [] lit u = do hSetBuffering stdout NoBuffering+ Prelude.interact (u lit)+ ttyInteract [outF] lit u = do c <- hGetContents stdin+ writeFile outF (u lit c) exitSuccess = exitWith ExitSuccess errorOut s = hPutStrLn stderr s >> hFlush stderr >> exitFailure usage prog = "Usage: "++prog@@ -81,6 +91,11 @@ . map (('-':) . fst)) optionTable ++ " ]" useDefault d f list | null list = d | otherwise = f (head list)+ useDefaults d f list | null list = d+ | otherwise = f list+ guessLiterate Nothing f = ".lhs" `isSuffixOf` f || ".ly" `isSuffixOf` f+ || ".lx" `isSuffixOf` f+ guessLiterate (Just b) _ = b -- some simple text formatting for usage messages width n left [] = []
Language/Haskell/HsColour.hs view
@@ -1,20 +1,22 @@ -- | This is a library which colourises Haskell code.--- It currently has five output formats:+-- It currently has six output formats: -- -- * ANSI terminal codes -- -- * LaTeX macros ----- * HTML with font tags+-- * HTML 3.2 with font tags ----- * HTML with CSS.+-- * HTML 4.01 with external CSS. --+-- * XHTML 1.0 with internal CSS.+-- -- * mIRC chat client colour codes. -- module Language.Haskell.HsColour (Output(..), ColourPrefs(..), hscolour) where -import Language.Haskell.HsColour.Colourise (ColourPrefs(..))+import Language.Haskell.HsColour.Colourise (ColourPrefs(..)) import qualified Language.Haskell.HsColour.TTY as TTY import qualified Language.Haskell.HsColour.HTML as HTML import qualified Language.Haskell.HsColour.CSS as CSS@@ -24,7 +26,6 @@ import Data.List(mapAccumL, isPrefixOf) import Data.Maybe import Language.Haskell.HsColour.Output-import Language.Haskell.HsColour.Options (Literate(..)) import Debug.Trace -- | Colourise Haskell source code with the given output format.@@ -32,22 +33,20 @@ -> ColourPrefs -- ^ Colour preferences (for formats that support them). -> Bool -- ^ Whether to include anchors. -> Bool -- ^ Whether output document is partial or complete.- -> Literate -- ^ Whether input document is literate haskell or not -> String -- ^ Title for output.+ -> Bool -- ^ Whether input document is literate haskell or not -> String -- ^ Haskell source code. -> String -- ^ Coloured Haskell source code.-hscolour output pref anchor partial literate title =- case literate of- NoLit -> hscolour' output pref anchor partial title- Bird -> literateHandler (map lhsClassify)- TeX -> literateHandler (snd . mapAccumL decideTypeOfLine False)+hscolour output pref anchor partial title False =+ hscolour' output pref anchor partial title+hscolour output pref anchor partial title True =+ concatMap chunk . joinL . classify . inlines where- literateHandler f = concatMap chunk . joinL . f . inlines- chunk (Lit c) = c- chunk (Code c) = hscolour' output pref anchor True title c+ chunk (Code c) = hscolour' output pref anchor True title c+ chunk (Lit c) = c hscolour' :: Output -- ^ Output format.- -> ColourPrefs -- ^ Colour preferences (for formats that support them).+ -> ColourPrefs -- ^ Colour preferences (for formats that support them) -> Bool -- ^ Whether to include anchors. -> Bool -- ^ Whether output document is partial or complete. -> String -- ^ Title for output.@@ -75,21 +74,20 @@ lines' ('\n':s) acc = acc ['\n'] : lines' s id -- Unix lines' (c:s) acc = lines' s (acc . (c:)) --- Note, I just pass the > symbol to the colouriser, which assumes that--- it's token based and not parse-based!!!-lhsClassify :: String -> Lit-lhsClassify ('>':xs) = Code ('>':xs)-lhsClassify xs = Lit xs --- texstyle is a bool indicating whether we are currently inside a code block-decideTypeOfLine texStyle current_line - | isPrefix "\\begin{code}" = codeLine- | texStyle = if not is_end then codeLine else (False, Code (current_line ))- | otherwise = (False, Lit current_line)- where isPrefix = flip isPrefixOf current_line - codeLine = (True, Code (current_line))- is_end = isPrefix "\\end{code}"+-- The code for classify is largely stolen from Language.Preprocessor.Unlit.+classify [] = []+classify (x:xs) | "\\begin{code}"`isPrefixOf`x+ = Lit x: allProg xs+ where allProg [] = [] -- Should give an error message,+ -- but I have no good position information.+ allProg (x:xs) | "\\end{code}"`isPrefixOf`x+ = Lit x: classify xs+ allProg (x:xs) = Code x: allProg xs+classify (('>':x):xs) = Code ('>':x) : classify xs+classify (x:xs) = Lit x: classify xs +-- Join up chunks of code/comment that are next to each other. joinL :: [Lit] -> [Lit] joinL [] = [] joinL (Code c:Code c2:xs) = joinL (Code (c++c2):xs)
Language/Haskell/HsColour/Colourise.hs view
@@ -2,6 +2,7 @@ ( module Language.Haskell.HsColour.ColourHighlight , ColourPrefs(..) , readColourPrefs+ , defaultColourPrefs , colourise ) where
Language/Haskell/HsColour/Options.hs view
@@ -1,7 +1,6 @@ module Language.Haskell.HsColour.Options ( Option(..) , Output(..)- , Literate(..) ) where import Language.Haskell.HsColour.Output@@ -12,11 +11,9 @@ | Version -- ^ report version | Information -- ^ report auxiliary information, e.g. CSS defaults | Format Output -- ^ what type of output to produce- | LHS Literate -- ^ literate input (i.e. multiple embedded fragments)+ | LHS Bool -- ^ literate input (i.e. multiple embedded fragments) | Anchors Bool -- ^ whether to add anchors | Partial Bool -- ^ whether to produce a full document or partial | Input FilePath -- ^ input source file | Output FilePath -- ^ output source file deriving Eq--data Literate = NoLit | Bird | TeX deriving Eq
Makefile view
@@ -1,5 +1,5 @@ LIBRARY = hscolour-VERSION = 1.13+VERSION = 1.14 DIRS = Language/Haskell/HsColour
README view
@@ -35,10 +35,10 @@ HTML DOCTYPE header, CSS stylesheet link, or LaTeX prologue. Alternatively, if you have a literate input source (e.g. .lhs file),-then the -lit option passes the literate parts untouched, and-colourises only the code fragments (indicated by Bird-tracks - a-> symbol in the left-most column), as if each was called individually-with -partial.+then the -lit option passes the literate parts untouched,+and colourises only the code fragments as if each was called+individually with -partial. The option -lit-tex is identical: it is+retained for backwards-compatibility only. You can configure the colours for different lexical entities by editing a configuration file called .hscolour in the current directory.
docs/hscolour/Language-Haskell-HsColour-Options.html view
@@ -121,9 +121,7 @@ ><TD CLASS="decl" >| <A HREF="#v%3ALHS" >LHS</A-> <A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Literate</A-></TD+> Bool</TD ></TR ><TR ><TD CLASS="decl"@@ -215,51 +213,9 @@ ></TABLE ></TD ></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"-><SPAN CLASS="keyword"->data</SPAN-> <A HREF="#t%3ALiterate"->Literate</A-> </TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="decl"->= <A HREF="#v%3ANoLit"->NoLit</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ABird"->Bird</A-></TD-></TR-><TR-><TD CLASS="decl"->| <A HREF="#v%3ATeX"->TeX</A-></TD-></TR ></TABLE ></TD ></TR-></TABLE-></TD-></TR-></TABLE-></TD-></TR ><TR ><TD CLASS="s15" ></TD@@ -359,9 +315,7 @@ ></A ><B >LHS</B-> <A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Literate</A-></TD+> Bool</TD ><TD CLASS="rdoc" >literate input (i.e. multiple embedded fragments) </TD@@ -562,95 +516,6 @@ ><TD CLASS="decl" >Show <A HREF="Language-Haskell-HsColour-Options.html#t%3AOutput" >Output</A-></TD-></TR-></TABLE-></DIV-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><SPAN CLASS="keyword"->data</SPAN-> <A NAME="t%3ALiterate"-></A-><B->Literate</B-> </TD-><TD CLASS="declbut"-><A HREF="Language/Haskell/HsColour/Options.html#Literate"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="section4"->Constructors</TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="arg"-><A NAME="v%3ANoLit"-></A-><B->NoLit</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ABird"-></A-><B->Bird</B-></TD-><TD CLASS="rdoc"-></TD-></TR-><TR-><TD CLASS="arg"-><A NAME="v%3ATeX"-></A-><B->TeX</B-></TD-><TD CLASS="rdoc"-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="section4"-><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Literate')" ALT="show/hide"-> Instances</TD-></TR-><TR-><TD CLASS="body"-><DIV ID="i:Literate" STYLE="display:block;"-><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"-><TR-><TD CLASS="decl"->Eq <A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Literate</A ></TD ></TR ></TABLE
docs/hscolour/Language-Haskell-HsColour.html view
@@ -70,7 +70,7 @@ ><TD CLASS="doc" ><P >This is a library which colourises Haskell code.- It currently has five output formats:+ It currently has six output formats: </P ><UL ><LI@@ -80,12 +80,15 @@ > LaTeX macros </LI ><LI-> HTML with font tags+> HTML 3.2 with font tags </LI ><LI-> HTML with CSS.+> HTML 4.01 with external CSS. </LI ><LI+> XHTML 1.0 with internal CSS.+</LI+><LI > mIRC chat client colour codes. </LI ></UL@@ -226,9 +229,7 @@ >Output</A > -> <A HREF="Language-Haskell-HsColour.html#t%3AColourPrefs" >ColourPrefs</A-> -> Bool -> Bool -> <A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Literate</A-> -> String -> String -> String</TD+> -> Bool -> Bool -> String -> Bool -> String -> String</TD ></TR ></TABLE ></TD@@ -596,18 +597,16 @@ ></TR ><TR ><TD CLASS="arg"->-> <A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Literate</A-></TD+>-> String</TD ><TD CLASS="rdoc"->Whether input document is literate haskell or not+>Title for output. </TD ></TR ><TR ><TD CLASS="arg"->-> String</TD+>-> Bool</TD ><TD CLASS="rdoc"->Title for output.+>Whether input document is literate haskell or not </TD ></TR ><TR
docs/hscolour/Language/Haskell/HsColour.html view
@@ -5,104 +5,102 @@ <title>Language/Haskell/HsColour.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | This is a library which colourises Haskell code.</i></font>-<a name="line-2"></a><font color=Blue><i>-- It currently has five output formats:</i></font>-<a name="line-3"></a><font color=Blue><i>--</i></font>-<a name="line-4"></a><font color=Blue><i>-- * ANSI terminal codes</i></font>-<a name="line-5"></a><font color=Blue><i>--</i></font>-<a name="line-6"></a><font color=Blue><i>-- * LaTeX macros</i></font>-<a name="line-7"></a><font color=Blue><i>--</i></font>-<a name="line-8"></a><font color=Blue><i>-- * HTML with font tags</i></font>-<a name="line-9"></a><font color=Blue><i>--</i></font>-<a name="line-10"></a><font color=Blue><i>-- * HTML with CSS.</i></font>-<a name="line-11"></a><font color=Blue><i>--</i></font>-<a name="line-12"></a><font color=Blue><i>-- * mIRC chat client colour codes.</i></font>-<a name="line-13"></a><font color=Blue><i>--</i></font>-<a name="line-14"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour <font color=Cyan>(</font>Output<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>-<a name="line-15"></a> hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>-<a name="line-16"></a>-<a name="line-17"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <font color=Cyan>(</font>ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-18"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY <u><font color=Green>as</font></u> TTY-<a name="line-19"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <u><font color=Green>as</font></u> HTML-<a name="line-20"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS <u><font color=Green>as</font></u> CSS-<a name="line-21"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>InlineCSS <u><font color=Green>as</font></u> ICSS-<a name="line-22"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <u><font color=Green>as</font></u> LaTeX-<a name="line-23"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>MIRC <u><font color=Green>as</font></u> MIRC-<a name="line-24"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>List<font color=Cyan>(</font>mapAccumL<font color=Cyan>,</font> isPrefixOf<font color=Cyan>)</font> -<a name="line-25"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Maybe-<a name="line-26"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Output-<a name="line-27"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Options <font color=Cyan>(</font>Literate<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-28"></a><u><font color=Green>import</font></u> Debug<font color=Cyan>.</font>Trace-<a name="line-29"></a>-<a name="line-30"></a><a name="hscolour"></a><font color=Blue><i>-- | Colourise Haskell source code with the given output format.</i></font>-<a name="line-31"></a>hscolour <font color=Red>::</font> Output <font color=Blue><i>-- ^ Output format.</i></font>-<a name="line-32"></a> <font color=Red>-></font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences (for formats that support them).</i></font>-<a name="line-33"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether to include anchors.</i></font>-<a name="line-34"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output document is partial or complete.</i></font>-<a name="line-35"></a> <font color=Red>-></font> Literate <font color=Blue><i>-- ^ Whether input document is literate haskell or not</i></font>-<a name="line-36"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Title for output.</i></font>-<a name="line-37"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-38"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Coloured Haskell source code.</i></font>-<a name="line-39"></a>hscolour output pref anchor partial literate title <font color=Red>=</font>-<a name="line-40"></a> <u><font color=Green>case</font></u> literate <u><font color=Green>of</font></u>-<a name="line-41"></a> NoLit <font color=Red>-></font> hscolour' output pref anchor partial title-<a name="line-42"></a> Bird <font color=Red>-></font> literateHandler <font color=Cyan>(</font>map lhsClassify<font color=Cyan>)</font>-<a name="line-43"></a> TeX <font color=Red>-></font> literateHandler <font color=Cyan>(</font>snd <font color=Cyan>.</font> mapAccumL decideTypeOfLine False<font color=Cyan>)</font>+<pre><a name="line-1"></a><font color=Blue>-- | This is a library which colourises Haskell code.</font>+<a name="line-2"></a><font color=Blue>-- It currently has six output formats:</font>+<a name="line-3"></a><font color=Blue>--</font>+<a name="line-4"></a><font color=Blue>-- * ANSI terminal codes</font>+<a name="line-5"></a><font color=Blue>--</font>+<a name="line-6"></a><font color=Blue>-- * LaTeX macros</font>+<a name="line-7"></a><font color=Blue>--</font>+<a name="line-8"></a><font color=Blue>-- * HTML 3.2 with font tags</font>+<a name="line-9"></a><font color=Blue>--</font>+<a name="line-10"></a><font color=Blue>-- * HTML 4.01 with external CSS.</font>+<a name="line-11"></a><font color=Blue>--</font>+<a name="line-12"></a><font color=Blue>-- * XHTML 1.0 with internal CSS.</font>+<a name="line-13"></a><font color=Blue>--</font>+<a name="line-14"></a><font color=Blue>-- * mIRC chat client colour codes.</font>+<a name="line-15"></a><font color=Blue>--</font>+<a name="line-16"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour <font color=Cyan>(</font>Output<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>+<a name="line-17"></a> hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>+<a name="line-18"></a>+<a name="line-19"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <font color=Cyan>(</font>ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-20"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY <u><font color=Green>as</font></u> TTY+<a name="line-21"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <u><font color=Green>as</font></u> HTML+<a name="line-22"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS <u><font color=Green>as</font></u> CSS+<a name="line-23"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>InlineCSS <u><font color=Green>as</font></u> ICSS+<a name="line-24"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <u><font color=Green>as</font></u> LaTeX+<a name="line-25"></a><u><font color=Green>import</font></u> <u><font color=Green>qualified</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>MIRC <u><font color=Green>as</font></u> MIRC+<a name="line-26"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>List<font color=Cyan>(</font>mapAccumL<font color=Cyan>,</font> isPrefixOf<font color=Cyan>)</font> +<a name="line-27"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Maybe+<a name="line-28"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Output+<a name="line-29"></a><u><font color=Green>import</font></u> Debug<font color=Cyan>.</font>Trace+<a name="line-30"></a>+<a name="line-31"></a><a name="hscolour"></a><font color=Blue>-- | Colourise Haskell source code with the given output format.</font>+<a name="line-32"></a>hscolour <font color=Red>::</font> Output <font color=Blue>-- ^ Output format.</font>+<a name="line-33"></a> <font color=Red>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>+<a name="line-34"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-35"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-36"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output.</font>+<a name="line-37"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether input document is literate haskell or not</font>+<a name="line-38"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-39"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-40"></a>hscolour output pref anchor partial title False <font color=Red>=</font>+<a name="line-41"></a> hscolour' output pref anchor partial title+<a name="line-42"></a>hscolour output pref anchor partial title True <font color=Red>=</font>+<a name="line-43"></a> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> classify <font color=Cyan>.</font> inlines <a name="line-44"></a> <u><font color=Green>where</font></u>-<a name="line-45"></a> literateHandler f <font color=Red>=</font> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> f <font color=Cyan>.</font> inlines-<a name="line-46"></a> chunk <font color=Cyan>(</font>Lit c<font color=Cyan>)</font> <font color=Red>=</font> c-<a name="line-47"></a> chunk <font color=Cyan>(</font>Code c<font color=Cyan>)</font> <font color=Red>=</font> hscolour' output pref anchor True title c-<a name="line-48"></a>-<a name="line-49"></a><a name="hscolour'"></a>hscolour' <font color=Red>::</font> Output <font color=Blue><i>-- ^ Output format.</i></font>-<a name="line-50"></a> <font color=Red>-></font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences (for formats that support them).</i></font>-<a name="line-51"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether to include anchors.</i></font>-<a name="line-52"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output document is partial or complete.</i></font>-<a name="line-53"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Title for output.</i></font>-<a name="line-54"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-55"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Coloured Haskell source code.</i></font>-<a name="line-56"></a>hscolour' TTY pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref-<a name="line-57"></a>hscolour' MIRC pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref-<a name="line-58"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u> partial <u><font color=Green>_</font></u> <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref partial-<a name="line-59"></a>hscolour' HTML pref anch partial top <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anch partial top-<a name="line-60"></a>hscolour' CSS <u><font color=Green>_</font></u> anch partial top <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anch partial top-<a name="line-61"></a>hscolour' ICSS pref anch partial top <font color=Red>=</font> ICSS<font color=Cyan>.</font>hscolour pref anch partial top-<a name="line-62"></a>-<a name="line-63"></a><a name="Lit"></a><font color=Blue><i>-- | Separating literate files into code\/comment chunks.</i></font>-<a name="line-64"></a><a name="Lit"></a><u><font color=Green>data</font></u> Lit <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Lit <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Show<font color=Cyan>)</font>-<a name="line-65"></a>-<a name="line-66"></a><a name="inlines"></a><font color=Blue><i>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</i></font>-<a name="line-67"></a><font color=Blue><i>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</i></font>-<a name="line-68"></a><font color=Blue><i>-- And retains the trailing '\n' character in each resultant string.</i></font>-<a name="line-69"></a>inlines <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font>-<a name="line-70"></a>inlines s <font color=Red>=</font> lines' s id-<a name="line-71"></a> <u><font color=Green>where</font></u>-<a name="line-72"></a> lines' [] acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>-<a name="line-73"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\^M'</font><b><font color=Red>:</font></b><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue><i>-- DOS</i></font>-<a name="line-74"></a><font color=Blue><i>--lines' ('\^M':s) acc = acc ['\n'] : lines' s id -- MacOS</i></font>-<a name="line-75"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue><i>-- Unix</i></font>-<a name="line-76"></a> lines' <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> lines' s <font color=Cyan>(</font>acc <font color=Cyan>.</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-45"></a> chunk <font color=Cyan>(</font>Code c<font color=Cyan>)</font> <font color=Red>=</font> hscolour' output pref anchor True title c+<a name="line-46"></a> chunk <font color=Cyan>(</font>Lit c<font color=Cyan>)</font> <font color=Red>=</font> c+<a name="line-47"></a>+<a name="line-48"></a><a name="hscolour'"></a>hscolour' <font color=Red>::</font> Output <font color=Blue>-- ^ Output format.</font>+<a name="line-49"></a> <font color=Red>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them)</font>+<a name="line-50"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-51"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-52"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output.</font>+<a name="line-53"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-54"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-55"></a>hscolour' TTY pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref+<a name="line-56"></a>hscolour' MIRC pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref+<a name="line-57"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u> partial <u><font color=Green>_</font></u> <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref partial+<a name="line-58"></a>hscolour' HTML pref anch partial top <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anch partial top+<a name="line-59"></a>hscolour' CSS <u><font color=Green>_</font></u> anch partial top <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anch partial top+<a name="line-60"></a>hscolour' ICSS pref anch partial top <font color=Red>=</font> ICSS<font color=Cyan>.</font>hscolour pref anch partial top+<a name="line-61"></a>+<a name="line-62"></a><a name="Lit"></a><font color=Blue>-- | Separating literate files into code\/comment chunks.</font>+<a name="line-63"></a><a name="Lit"></a><u><font color=Green>data</font></u> Lit <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Lit <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Show<font color=Cyan>)</font>+<a name="line-64"></a>+<a name="line-65"></a><a name="inlines"></a><font color=Blue>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</font>+<a name="line-66"></a><font color=Blue>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</font>+<a name="line-67"></a><font color=Blue>-- And retains the trailing '\n' character in each resultant string.</font>+<a name="line-68"></a>inlines <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="line-69"></a>inlines s <font color=Red>=</font> lines' s id+<a name="line-70"></a> <u><font color=Green>where</font></u>+<a name="line-71"></a> lines' [] acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>+<a name="line-72"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\^M'</font><b><font color=Red>:</font></b><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue>-- DOS</font>+<a name="line-73"></a><font color=Blue>--lines' ('\^M':s) acc = acc ['\n'] : lines' s id -- MacOS</font>+<a name="line-74"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue>-- Unix</font>+<a name="line-75"></a> lines' <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> lines' s <font color=Cyan>(</font>acc <font color=Cyan>.</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-76"></a> <a name="line-77"></a>-<a name="line-78"></a><a name="lhsClassify"></a><font color=Blue><i>-- Note, I just pass the > symbol to the colouriser, which assumes that</i></font>-<a name="line-79"></a><font color=Blue><i>-- it's token based and not parse-based!!!</i></font>-<a name="line-80"></a>lhsClassify <font color=Red>::</font> String <font color=Red>-></font> Lit-<a name="line-81"></a>lhsClassify <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>-<a name="line-82"></a>lhsClassify xs <font color=Red>=</font> Lit xs-<a name="line-83"></a>-<a name="line-84"></a><a name="decideTypeOfLine"></a><font color=Blue><i>-- texstyle is a bool indicating whether we are currently inside a code block</i></font>-<a name="line-85"></a>decideTypeOfLine texStyle current_line -<a name="line-86"></a> <font color=Red>|</font> isPrefix <font color=Magenta>"\\begin{code}"</font> <font color=Red>=</font> codeLine-<a name="line-87"></a> <font color=Red>|</font> texStyle <font color=Red>=</font> <u><font color=Green>if</font></u> not is_end <u><font color=Green>then</font></u> codeLine <u><font color=Green>else</font></u> <font color=Cyan>(</font>False<font color=Cyan>,</font> Code <font color=Cyan>(</font>current_line <font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-88"></a> <font color=Red>|</font> otherwise <font color=Red>=</font> <font color=Cyan>(</font>False<font color=Cyan>,</font> Lit current_line<font color=Cyan>)</font>-<a name="line-89"></a> <u><font color=Green>where</font></u> isPrefix <font color=Red>=</font> flip isPrefixOf current_line -<a name="line-90"></a> codeLine <font color=Red>=</font> <font color=Cyan>(</font>True<font color=Cyan>,</font> Code <font color=Cyan>(</font>current_line<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-91"></a> is_end <font color=Red>=</font> isPrefix <font color=Magenta>"\\end{code}"</font>-<a name="line-92"></a>-<a name="line-93"></a><a name="joinL"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Lit<font color=Red>]</font> <font color=Red>-></font> <font color=Red>[</font>Lit<font color=Red>]</font>-<a name="line-94"></a>joinL [] <font color=Red>=</font> []-<a name="line-95"></a>joinL <font color=Cyan>(</font>Code c<b><font color=Red>:</font></b>Code c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Code <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>-<a name="line-96"></a>joinL <font color=Cyan>(</font>Lit c <b><font color=Red>:</font></b>Lit c2 <b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Lit <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>-<a name="line-97"></a>joinL <font color=Cyan>(</font>any<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> any<b><font color=Red>:</font></b> joinL xs-<a name="line-98"></a>+<a name="line-78"></a><a name="classify"></a><font color=Blue>-- The code for classify is largely stolen from Language.Preprocessor.Unlit.</font>+<a name="line-79"></a>classify [] <font color=Red>=</font> []+<a name="line-80"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\begin{code}"</font><font color=Cyan>`isPrefixOf`</font>x+<a name="line-81"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> allProg xs+<a name="line-82"></a> <u><font color=Green>where</font></u> allProg [] <font color=Red>=</font> [] <font color=Blue>-- Should give an error message,</font>+<a name="line-83"></a> <font color=Blue>-- but I have no good position information.</font>+<a name="line-84"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\end{code}"</font><font color=Cyan>`isPrefixOf`</font>x+<a name="line-85"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs+<a name="line-86"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code x<b><font color=Red>:</font></b> allProg xs+<a name="line-87"></a>classify <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font> <b><font color=Red>:</font></b> classify xs+<a name="line-88"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs+<a name="line-89"></a>+<a name="line-90"></a><a name="joinL"></a><font color=Blue>-- Join up chunks of code/comment that are next to each other.</font>+<a name="line-91"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Lit<font color=Red>]</font> <font color=Red>-></font> <font color=Red>[</font>Lit<font color=Red>]</font>+<a name="line-92"></a>joinL [] <font color=Red>=</font> []+<a name="line-93"></a>joinL <font color=Cyan>(</font>Code c<b><font color=Red>:</font></b>Code c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Code <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>+<a name="line-94"></a>joinL <font color=Cyan>(</font>Lit c <b><font color=Red>:</font></b>Lit c2 <b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Lit <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>+<a name="line-95"></a>joinL <font color=Cyan>(</font>any<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> any<b><font color=Red>:</font></b> joinL xs+<a name="line-96"></a> </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/ANSI.html view
@@ -5,7 +5,7 @@ <title>Language/Haskell/HsColour/ANSI.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Partially taken from Hugs AnsiScreen.hs library:</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Partially taken from Hugs AnsiScreen.hs library:</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI <a name="line-3"></a> <font color=Cyan>(</font> highlightOn <a name="line-4"></a> <font color=Cyan>,</font> highlightOff@@ -27,15 +27,15 @@ <a name="line-20"></a><u><font color=Green>import</font></u> Char <font color=Cyan>(</font>isDigit<font color=Cyan>)</font> <a name="line-21"></a> <a name="line-22"></a>-<a name="line-23"></a><font color=Blue><i>-- Basic screen control codes:</i></font>+<a name="line-23"></a><font color=Blue>-- Basic screen control codes:</font> <a name="line-24"></a> <a name="line-25"></a><a name="Pos"></a><u><font color=Green>type</font></u> Pos <font color=Red>=</font> <font color=Cyan>(</font>Int<font color=Cyan>,</font>Int<font color=Cyan>)</font> <a name="line-26"></a> <a name="line-27"></a><a name="at"></a>at <font color=Red>::</font> Pos <font color=Red>-></font> String <font color=Red>-></font> String-<a name="line-28"></a><a name="goto"></a><font color=Blue><i>-- | Move the screen cursor to the given position.</i></font>+<a name="line-28"></a><a name="goto"></a><font color=Blue>-- | Move the screen cursor to the given position.</font> <a name="line-29"></a>goto <font color=Red>::</font> Int <font color=Red>-></font> Int <font color=Red>-></font> String <a name="line-30"></a><a name="home"></a>home <font color=Red>::</font> String-<a name="line-31"></a><a name="cls"></a><font color=Blue><i>-- | Clear the screen.</i></font>+<a name="line-31"></a><a name="cls"></a><font color=Blue>-- | Clear the screen.</font> <a name="line-32"></a>cls <font color=Red>::</font> String <a name="line-33"></a> <a name="line-34"></a>at <font color=Cyan>(</font>x<font color=Cyan>,</font>y<font color=Cyan>)</font> s <font color=Red>=</font> goto x y <font color=Cyan>++</font> s@@ -52,16 +52,16 @@ <a name="line-45"></a><a name="clearline"></a>clearline <font color=Red>=</font> <font color=Magenta>"\ESC[2K"</font> <a name="line-46"></a><a name="clearDown"></a>clearDown <font color=Red>=</font> <font color=Magenta>"\ESC[J"</font> <a name="line-47"></a><a name="clearUp"></a>clearUp <font color=Red>=</font> <font color=Magenta>"\ESC[1J"</font>-<a name="line-48"></a><font color=Blue><i>-- Choose whichever of the following lines is suitable for your system:</i></font>-<a name="line-49"></a>cls <font color=Red>=</font> <font color=Magenta>"\ESC[2J"</font> <font color=Blue><i>-- for PC with ANSI.SYS</i></font>-<a name="line-50"></a><font color=Blue><i>--cls = "\^L" -- for Sun window</i></font>+<a name="line-48"></a><font color=Blue>-- Choose whichever of the following lines is suitable for your system:</font>+<a name="line-49"></a>cls <font color=Red>=</font> <font color=Magenta>"\ESC[2J"</font> <font color=Blue>-- for PC with ANSI.SYS</font>+<a name="line-50"></a><font color=Blue>--cls = "\^L" -- for Sun window</font> <a name="line-51"></a> <a name="line-52"></a><a name="savePosition"></a>savePosition <font color=Red>=</font> <font color=Magenta>"\ESC7"</font> <a name="line-53"></a><a name="restorePosition"></a>restorePosition <font color=Red>=</font> <font color=Magenta>"\ESC8"</font> <a name="line-54"></a> <a name="line-55"></a>-<a name="line-56"></a><font color=Blue><i>-- data Colour -- imported from ColourHighlight</i></font>-<a name="line-57"></a><font color=Blue><i>-- data Highlight -- imported from ColourHighlight</i></font>+<a name="line-56"></a><font color=Blue>-- data Colour -- imported from ColourHighlight</font>+<a name="line-57"></a><font color=Blue>-- data Highlight -- imported from ColourHighlight</font> <a name="line-58"></a> <a name="line-59"></a><u><font color=Green>instance</font></u> Enum Highlight <u><font color=Green>where</font></u> <a name="line-60"></a> fromEnum Normal <font color=Red>=</font> <font color=Magenta>0</font>@@ -75,7 +75,7 @@ <a name="line-68"></a> fromEnum <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>40</font> <font color=Cyan>+</font> fromEnum c <a name="line-69"></a> fromEnum Italic <font color=Red>=</font> <font color=Magenta>2</font> <a name="line-70"></a>-<a name="line-71"></a><a name="highlight"></a><font color=Blue><i>-- | Make the given string appear with all of the listed highlights</i></font>+<a name="line-71"></a><a name="highlight"></a><font color=Blue>-- | Make the given string appear with all of the listed highlights</font> <a name="line-72"></a>highlight <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-></font> String <font color=Red>-></font> String <a name="line-73"></a>highlight attrs s <font color=Red>=</font> highlightOn attrs <font color=Cyan>++</font> s <font color=Cyan>++</font> highlightOff <a name="line-74"></a>@@ -86,19 +86,19 @@ <a name="line-79"></a><a name="highlightOff"></a>highlightOff <font color=Red>=</font> <font color=Magenta>"\ESC[0m"</font> <a name="line-80"></a> <a name="line-81"></a>-<a name="line-82"></a><a name="colourCycle"></a><font color=Blue><i>-- | An infinite supply of colours.</i></font>+<a name="line-82"></a><a name="colourCycle"></a><font color=Blue>-- | An infinite supply of colours.</font> <a name="line-83"></a>colourCycle <font color=Red>::</font> <font color=Red>[</font>Colour<font color=Red>]</font> <a name="line-84"></a>colourCycle <font color=Red>=</font> cycle <font color=Red>[</font>Red<font color=Cyan>,</font>Blue<font color=Cyan>,</font>Magenta<font color=Cyan>,</font>Green<font color=Cyan>,</font>Cyan<font color=Red>]</font> <a name="line-85"></a> <a name="line-86"></a>-<a name="line-87"></a><a name="enableScrollRegion"></a><font color=Blue><i>-- | Scrolling</i></font>+<a name="line-87"></a><a name="enableScrollRegion"></a><font color=Blue>-- | Scrolling</font> <a name="line-88"></a>enableScrollRegion <font color=Red>::</font> Int <font color=Red>-></font> Int <font color=Red>-></font> String <a name="line-89"></a>enableScrollRegion start end <font color=Red>=</font> <font color=Magenta>"\ESC["</font><font color=Cyan>++</font>show start<font color=Cyan>++</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show end<font color=Cyan>++</font><font color=Magenta>"r"</font> <a name="line-90"></a> <a name="line-91"></a><a name="scrollDown"></a>scrollDown <font color=Red>=</font> <font color=Magenta>"\ESCD"</font> <a name="line-92"></a><a name="scrollUp"></a>scrollUp <font color=Red>=</font> <font color=Magenta>"\ESCM"</font> <a name="line-93"></a>-<a name="line-94"></a><a name="lineWrap"></a><font color=Blue><i>-- Line-wrapping mode</i></font>+<a name="line-94"></a><a name="lineWrap"></a><font color=Blue>-- Line-wrapping mode</font> <a name="line-95"></a>lineWrap True <font color=Red>=</font> <font color=Magenta>"\ESC[7h"</font> <a name="line-96"></a>lineWrap False <font color=Red>=</font> <font color=Magenta>"\ESC[7l"</font> <a name="line-97"></a>
docs/hscolour/Language/Haskell/HsColour/Anchors.html view
@@ -13,57 +13,57 @@ <a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>General <a name="line-7"></a><u><font color=Green>import</font></u> List <a name="line-8"></a>-<a name="line-9"></a><font color=Blue><i>-- This is an attempt to find the first defining occurrence of an</i></font>-<a name="line-10"></a><font color=Blue><i>-- identifier (function, datatype, class) in a Haskell source file.</i></font>-<a name="line-11"></a><font color=Blue><i>-- Rather than parse the module properly, we try to get by with just</i></font>-<a name="line-12"></a><font color=Blue><i>-- a finite state automaton. Keeping a record of identifiers we</i></font>-<a name="line-13"></a><font color=Blue><i>-- have already seen, we look at the beginning of every line to see</i></font>-<a name="line-14"></a><font color=Blue><i>-- if it starts with the right tokens to introduce a defn. If so,</i></font>-<a name="line-15"></a><font color=Blue><i>-- we look a little bit further until we can be certain. Then plonk</i></font>-<a name="line-16"></a><font color=Blue><i>-- (or not) an anchor at the beginning of the line.</i></font>+<a name="line-9"></a><font color=Blue>-- This is an attempt to find the first defining occurrence of an</font>+<a name="line-10"></a><font color=Blue>-- identifier (function, datatype, class) in a Haskell source file.</font>+<a name="line-11"></a><font color=Blue>-- Rather than parse the module properly, we try to get by with just</font>+<a name="line-12"></a><font color=Blue>-- a finite state automaton. Keeping a record of identifiers we</font>+<a name="line-13"></a><font color=Blue>-- have already seen, we look at the beginning of every line to see</font>+<a name="line-14"></a><font color=Blue>-- if it starts with the right tokens to introduce a defn. If so,</font>+<a name="line-15"></a><font color=Blue>-- we look a little bit further until we can be certain. Then plonk</font>+<a name="line-16"></a><font color=Blue>-- (or not) an anchor at the beginning of the line.</font> <a name="line-17"></a> <a name="line-18"></a><a name="Anchor"></a><u><font color=Green>type</font></u> Anchor <font color=Red>=</font> String <a name="line-19"></a>-<a name="line-20"></a><a name="insertAnchors"></a><font color=Blue><i>-- | 'insertAnchors' places an anchor marker in the token stream before the</i></font>-<a name="line-21"></a><font color=Blue><i>-- first defining occurrence of any identifier. Here, /before/ means</i></font>-<a name="line-22"></a><font color=Blue><i>-- immediately preceding its type signature, or preceding a (haddock)</i></font>-<a name="line-23"></a><font color=Blue><i>-- comment that comes immediately before the type signature, or failing</i></font>-<a name="line-24"></a><font color=Blue><i>-- either of those, before the first equation.</i></font>+<a name="line-20"></a><a name="insertAnchors"></a><font color=Blue>-- | 'insertAnchors' places an anchor marker in the token stream before the</font>+<a name="line-21"></a><font color=Blue>-- first defining occurrence of any identifier. Here, /before/ means</font>+<a name="line-22"></a><font color=Blue>-- immediately preceding its type signature, or preceding a (haddock)</font>+<a name="line-23"></a><font color=Blue>-- comment that comes immediately before the type signature, or failing</font>+<a name="line-24"></a><font color=Blue>-- either of those, before the first equation.</font> <a name="line-25"></a>insertAnchors <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-></font> <font color=Red>[</font>Either Anchor <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <a name="line-26"></a>insertAnchors <font color=Red>=</font> anchor emptyST <a name="line-27"></a>-<a name="line-28"></a><a name="anchor"></a><font color=Blue><i>-- looks at first token in the left-most position of each line</i></font>-<a name="line-29"></a><font color=Blue><i>-- precondition: have just seen a newline token.</i></font>+<a name="line-28"></a><a name="anchor"></a><font color=Blue>-- looks at first token in the left-most position of each line</font>+<a name="line-29"></a><font color=Blue>-- precondition: have just seen a newline token.</font> <a name="line-30"></a>anchor st s <font color=Red>=</font> <u><font color=Green>case</font></u> identifier st s <u><font color=Green>of</font></u> <a name="line-31"></a> Nothing <font color=Red>-></font> emit st s <a name="line-32"></a> Just v <font color=Red>-></font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s <a name="line-33"></a>-<a name="line-34"></a><a name="emit"></a><font color=Blue><i>-- emit passes stuff through until the next newline has been encountered,</i></font>-<a name="line-35"></a><font color=Blue><i>-- then jumps back into the anchor function</i></font>-<a name="line-36"></a><font color=Blue><i>-- pre-condition: newlines are explicitly single tokens</i></font>+<a name="line-34"></a><a name="emit"></a><font color=Blue>-- emit passes stuff through until the next newline has been encountered,</font>+<a name="line-35"></a><font color=Blue>-- then jumps back into the anchor function</font>+<a name="line-36"></a><font color=Blue>-- pre-condition: newlines are explicitly single tokens</font> <a name="line-37"></a>emit st <font color=Cyan>(</font>t<font color=Red>@</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Right t<b><font color=Red>:</font></b> anchor st stream <a name="line-38"></a>emit st <font color=Cyan>(</font>t<b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Right t<b><font color=Red>:</font></b> emit st stream <a name="line-39"></a>emit <u><font color=Green>_</font></u> [] <font color=Red>=</font> [] <a name="line-40"></a>-<a name="line-41"></a><a name="identifier"></a><font color=Blue><i>-- Given that we are at the beginning of a line, determine whether there</i></font>-<a name="line-42"></a><font color=Blue><i>-- is an identifier defined here, and if so, return it.</i></font>-<a name="line-43"></a><font color=Blue><i>-- precondition: have just seen a newline token.</i></font>+<a name="line-41"></a><a name="identifier"></a><font color=Blue>-- Given that we are at the beginning of a line, determine whether there</font>+<a name="line-42"></a><font color=Blue>-- is an identifier defined here, and if so, return it.</font>+<a name="line-43"></a><font color=Blue>-- precondition: have just seen a newline token.</font> <a name="line-44"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>kind<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>|</font> kind<font color=Cyan>`elem`</font><font color=Red>[</font>Varid<font color=Cyan>,</font>Definition<font color=Red>]</font> <font color=Red>=</font> <a name="line-45"></a> <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u> <a name="line-46"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>-<a name="line-47"></a> notVarop <font color=Blue><i>-- | typesig stream -> Nothing -- not a defn</i></font>-<a name="line-48"></a> <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing <font color=Blue><i>-- already defined</i></font>+<a name="line-47"></a> notVarop <font color=Blue>-- | typesig stream -> Nothing -- not a defn</font>+<a name="line-48"></a> <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing <font color=Blue>-- already defined</font> <a name="line-49"></a> <font color=Red>|</font> otherwise <font color=Red>-></font> Just v <a name="line-50"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> <a name="line-51"></a> <u><font color=Green>case</font></u> stream <u><font color=Green>of</font></u> <a name="line-52"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>-<a name="line-53"></a> <font color=Blue><i>-- | typesig stream -> Nothing</i></font>+<a name="line-53"></a> <font color=Blue>-- | typesig stream -> Nothing</font> <a name="line-54"></a> <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing <a name="line-55"></a> <font color=Red>|</font> otherwise <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font> <a name="line-56"></a> notVarop <font color=Red>-></font> <u><font color=Green>case</font></u> skip <font color=Cyan>(</font>munchParens stream<font color=Cyan>)</font> <u><font color=Green>of</font></u> <a name="line-57"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font> <a name="line-58"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> Nothing-<a name="line-59"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Nothing <font color=Blue><i>-- not yet implemented</i></font>+<a name="line-59"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Nothing <font color=Blue>-- not yet implemented</font> <a name="line-60"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> getConid stream <a name="line-61"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> getConid stream <a name="line-62"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> getConid stream@@ -71,7 +71,7 @@ <a name="line-64"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Space<font color=Cyan>,</font><font color=Magenta>"\n"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> identifier st stream <a name="line-65"></a>identifier st stream <font color=Red>=</font> Nothing <a name="line-66"></a>-<a name="line-67"></a><a name="typesig"></a><font color=Blue><i>-- Is this really a type signature? (no longer used)</i></font>+<a name="line-67"></a><a name="typesig"></a><font color=Blue>-- Is this really a type signature? (no longer used)</font> <a name="line-68"></a>typesig <font color=Red>::</font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <font color=Red>-></font> Bool <a name="line-69"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> True <a name="line-70"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Varid<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> typesig stream@@ -81,25 +81,25 @@ <a name="line-74"></a>typesig <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> typesig stream <a name="line-75"></a>typesig <u><font color=Green>_</font></u> <font color=Red>=</font> False <a name="line-76"></a>-<a name="line-77"></a><a name="munchParens"></a><font color=Blue><i>-- throw away everything from opening paren to matching close</i></font>-<a name="line-78"></a>munchParens <font color=Red>=</font> munch <font color=Cyan>(</font><font color=Magenta>0</font><font color=Red>::</font>Int<font color=Cyan>)</font> <font color=Blue><i>-- already seen open paren</i></font>+<a name="line-77"></a><a name="munchParens"></a><font color=Blue>-- throw away everything from opening paren to matching close</font>+<a name="line-78"></a>munchParens <font color=Red>=</font> munch <font color=Cyan>(</font><font color=Magenta>0</font><font color=Red>::</font>Int<font color=Cyan>)</font> <font color=Blue>-- already seen open paren</font> <a name="line-79"></a> <u><font color=Green>where</font></u> munch <font color=Magenta>0</font> <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> rest-<a name="line-80"></a> munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Blue><i>-</i></font><font color=Magenta>1</font><font color=Cyan>)</font> rest+<a name="line-80"></a> munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> rest <a name="line-81"></a> munch n <font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> rest <a name="line-82"></a> munch n <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> munch n rest-<a name="line-83"></a> munch <u><font color=Green>_</font></u> [] <font color=Red>=</font> [] <font color=Blue><i>-- source is ill-formed</i></font>+<a name="line-83"></a> munch <u><font color=Green>_</font></u> [] <font color=Red>=</font> [] <font color=Blue>-- source is ill-formed</font> <a name="line-84"></a>-<a name="line-85"></a><a name="fix"></a><font color=Blue><i>-- ensure anchor name is correct for a Varop</i></font>+<a name="line-85"></a><a name="fix"></a><font color=Blue>-- ensure anchor name is correct for a Varop</font> <a name="line-86"></a>fix <font color=Cyan>(</font><font color=Magenta>'`'</font><b><font color=Red>:</font></b>v<font color=Cyan>)</font> <font color=Red>=</font> dropLast <font color=Magenta>'`'</font> v <a name="line-87"></a>fix v <font color=Red>=</font> v <a name="line-88"></a>-<a name="line-89"></a><a name="skip"></a><font color=Blue><i>-- look past whitespace and comments to next "real" token</i></font>+<a name="line-89"></a><a name="skip"></a><font color=Blue>-- look past whitespace and comments to next "real" token</font> <a name="line-90"></a>skip <font color=Cyan>(</font><font color=Cyan>(</font>Space<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> skip stream <a name="line-91"></a>skip <font color=Cyan>(</font><font color=Cyan>(</font>Comment<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> skip stream <a name="line-92"></a>skip stream <font color=Red>=</font> stream <a name="line-93"></a>-<a name="line-94"></a><a name="getConid"></a><font color=Blue><i>-- skip possible context up to and including "=>", returning next Conid token</i></font>-<a name="line-95"></a><font color=Blue><i>-- (this function is highly partial - relies on source being parse-correct)</i></font>+<a name="line-94"></a><a name="getConid"></a><font color=Blue>-- skip possible context up to and including "=>", returning next Conid token</font>+<a name="line-95"></a><font color=Blue>-- (this function is highly partial - relies on source being parse-correct)</font> <a name="line-96"></a>getConid stream <font color=Red>=</font> <a name="line-97"></a> <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u> <a name="line-98"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c<font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-></font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>@@ -117,17 +117,17 @@ <a name="line-110"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =>"</font><font color=Cyan>)</font> <a name="line-111"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"no Conid or (...)"</font><font color=Cyan>)</font> <a name="line-112"></a> <u><font color=Green>where</font></u> debug <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> Nothing-<a name="line-113"></a> <font color=Blue><i>-- debug (s:t) c = error ("HsColour: getConid failed: "++show s</i></font>-<a name="line-114"></a> <font color=Blue><i>-- ++"\n in the context of: "++c)</i></font>+<a name="line-113"></a> <font color=Blue>-- debug (s:t) c = error ("HsColour: getConid failed: "++show s</font>+<a name="line-114"></a> <font color=Blue>-- ++"\n in the context of: "++c)</font> <a name="line-115"></a>-<a name="line-116"></a><a name="context"></a><font color=Blue><i>-- jump past possible class context</i></font>+<a name="line-116"></a><a name="context"></a><font color=Blue>-- jump past possible class context</font> <a name="line-117"></a>context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream <a name="line-118"></a>context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=>"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> stream <a name="line-119"></a>context <font color=Cyan>(</font><u><font color=Green>_</font></u><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> context stream <a name="line-120"></a>context [] <font color=Red>=</font> [] <a name="line-121"></a>-<a name="line-122"></a><a name="ST"></a><font color=Blue><i>-- simple implementation of a string lookup table.</i></font>-<a name="line-123"></a><a name="ST"></a><font color=Blue><i>-- replace this with something more sophisticated if needed.</i></font>+<a name="line-122"></a><a name="ST"></a><font color=Blue>-- simple implementation of a string lookup table.</font>+<a name="line-123"></a><a name="ST"></a><font color=Blue>-- replace this with something more sophisticated if needed.</font> <a name="line-124"></a><a name="ST"></a><u><font color=Green>type</font></u> ST <font color=Red>=</font> <font color=Red>[</font>String<font color=Red>]</font> <a name="line-125"></a> <a name="line-126"></a><a name="emptyST"></a>emptyST <font color=Red>::</font> ST
docs/hscolour/Language/Haskell/HsColour/CSS.html view
@@ -5,7 +5,7 @@ <title>Language/Haskell/HsColour/CSS.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Formats Haskell source code as HTML with CSS.</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code as HTML with CSS.</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-3"></a> <a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors@@ -13,14 +13,14 @@ <a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <font color=Cyan>(</font>renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> <a name="line-7"></a> renderNewLinesAnchors<font color=Cyan>,</font> escape<font color=Cyan>)</font> <a name="line-8"></a>-<a name="line-9"></a><a name="hscolour"></a><font color=Blue><i>-- | Formats Haskell source code as a complete HTML document with CSS.</i></font>-<a name="line-10"></a>hscolour <font color=Red>::</font> Bool <font color=Blue><i>-- ^ Whether to include anchors.</i></font>-<a name="line-11"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output should be partial</i></font>-<a name="line-12"></a> <font color=Blue><i>-- (= no stylesheet link will be included.)</i></font>-<a name="line-13"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Title for HTML page.</i></font>-<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ An HTML document containing the coloured </i></font>-<a name="line-16"></a> <font color=Blue><i>-- Haskell source code.</i></font>+<a name="line-9"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete HTML document with CSS.</font>+<a name="line-10"></a>hscolour <font color=Red>::</font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-11"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial</font>+<a name="line-12"></a> <font color=Blue>-- (= no stylesheet link will be included.)</font>+<a name="line-13"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for HTML page.</font>+<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>+<a name="line-16"></a> <font color=Blue>-- Haskell source code.</font> <a name="line-17"></a>hscolour anchor partial title <font color=Red>=</font> <a name="line-18"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font> <a name="line-19"></a> <font color=Cyan>.</font> pre
docs/hscolour/Language/Haskell/HsColour/Classify.html view
@@ -13,44 +13,44 @@ <a name="line-6"></a><u><font color=Green>import</font></u> Char <a name="line-7"></a><u><font color=Green>import</font></u> List <a name="line-8"></a>-<a name="line-9"></a><a name="tokenise"></a><font color=Blue><i>-- | Lex Haskell source code into an annotated token stream, without</i></font>-<a name="line-10"></a><font color=Blue><i>-- discarding any characters or layout.</i></font>+<a name="line-9"></a><a name="tokenise"></a><font color=Blue>-- | Lex Haskell source code into an annotated token stream, without</font>+<a name="line-10"></a><font color=Blue>-- discarding any characters or layout.</font> <a name="line-11"></a>tokenise <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font> <a name="line-12"></a>tokenise str <font color=Red>=</font> <a name="line-13"></a> <u><font color=Green>let</font></u> chunks <font color=Red>=</font> glue <font color=Cyan>.</font> chunk <font color=Cyan>$</font> str <a name="line-14"></a> newline <font color=Red>=</font> True <b><font color=Red>:</font></b> <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Magenta>"\n"</font> <font color=Cyan>`isPrefixOf`</font><font color=Cyan>)</font> chunks<font color=Cyan>)</font> <a name="line-15"></a> <u><font color=Green>in</font></u> map <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>s<font color=Cyan>,</font>n<font color=Cyan>)</font><font color=Red>-></font> <font color=Cyan>(</font>classify s n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>zip chunks newline<font color=Cyan>)</font> <a name="line-16"></a>-<a name="line-17"></a><a name="chunk"></a><font color=Blue><i>-- Basic Haskell lexing, except we keep whitespace.</i></font>+<a name="line-17"></a><a name="chunk"></a><font color=Blue>-- Basic Haskell lexing, except we keep whitespace.</font> <a name="line-18"></a>chunk <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font> <a name="line-19"></a>chunk [] <font color=Red>=</font> []-<a name="line-20"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> chunk s <font color=Blue><i>-- get rid of DOS newline stuff</i></font>+<a name="line-20"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> chunk s <font color=Blue>-- get rid of DOS newline stuff</font> <a name="line-21"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\n"</font><b><font color=Red>:</font></b> chunk s <a name="line-22"></a>chunk <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>|</font> isLinearSpace c <a name="line-23"></a> <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk rest <u><font color=Green>where</font></u> <font color=Cyan>(</font>ss<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span isLinearSpace s <a name="line-24"></a>chunk <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>let</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Magenta>0</font> s <a name="line-25"></a> <u><font color=Green>in</font></u> <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>com<font color=Cyan>)</font> <b><font color=Red>:</font></b> chunk s' <a name="line-26"></a>chunk s <font color=Red>=</font> <u><font color=Green>case</font></u> Prelude<font color=Cyan>.</font>lex s <u><font color=Green>of</font></u>-<a name="line-27"></a> [] <font color=Red>-></font> <font color=Red>[</font>head s<font color=Red>]</font><b><font color=Red>:</font></b> chunk <font color=Cyan>(</font>tail s<font color=Cyan>)</font> <font color=Blue><i>-- e.g. inside comment</i></font>+<a name="line-27"></a> [] <font color=Red>-></font> <font color=Red>[</font>head s<font color=Red>]</font><b><font color=Red>:</font></b> chunk <font color=Cyan>(</font>tail s<font color=Cyan>)</font> <font color=Blue>-- e.g. inside comment</font> <a name="line-28"></a> <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font><font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <a name="line-29"></a> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> tok <font color=Red>-></font> <font color=Cyan>(</font>tok<font color=Cyan>++</font>com<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk s' <a name="line-30"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment rest <a name="line-31"></a> <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-></font> tok<b><font color=Red>:</font></b> chunk rest <a name="line-32"></a>-<a name="line-33"></a><a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t\f"</font> <font color=Blue><i>-- " \t\xa0"</i></font>+<a name="line-33"></a><a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t\f"</font> <font color=Blue>-- " \t\xa0"</font> <a name="line-34"></a>-<a name="line-35"></a><a name="glue"></a><font color=Blue><i>-- Glue sequences of tokens into more useful blobs</i></font>-<a name="line-36"></a><font color=Blue><i>--glue (q:".":n:rest) | Char.isUpper (head q) -- qualified names</i></font>-<a name="line-37"></a><font color=Blue><i>-- = glue ((q++"."++n): rest)</i></font>-<a name="line-38"></a>glue <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> <font color=Blue><i>-- `varid` -> varop</i></font>+<a name="line-35"></a><a name="glue"></a><font color=Blue>-- Glue sequences of tokens into more useful blobs</font>+<a name="line-36"></a><font color=Blue>--glue (q:".":n:rest) | Char.isUpper (head q) -- qualified names</font>+<a name="line-37"></a><font color=Blue>-- = glue ((q++"."++n): rest)</font>+<a name="line-38"></a>glue <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>=</font> <font color=Blue>-- `varid` -> varop</font> <a name="line-39"></a> <u><font color=Green>case</font></u> glue rest <u><font color=Green>of</font></u> <a name="line-40"></a> <font color=Cyan>(</font>qn<b><font color=Red>:</font></b><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-></font> <font color=Cyan>(</font><font color=Magenta>"`"</font><font color=Cyan>++</font>qn<font color=Cyan>++</font><font color=Magenta>"`"</font><font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest <a name="line-41"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <font color=Magenta>"`"</font><b><font color=Red>:</font></b> glue rest-<a name="line-42"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Cyan>&&</font> length s <font color=Cyan>>=</font><font color=Magenta>2</font> <font color=Blue><i>-- eol comment</i></font>+<a name="line-42"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Cyan>&&</font> length s <font color=Cyan>>=</font><font color=Magenta>2</font> <font color=Blue>-- eol comment</font> <a name="line-43"></a> <font color=Red>=</font> <font color=Cyan>(</font>s<font color=Cyan>++</font>concat c<font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest <a name="line-44"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>c<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> break <font color=Cyan>(</font><font color=Magenta>'\n'</font><font color=Cyan>`elem`</font><font color=Cyan>)</font> ss-<a name="line-45"></a><font color=Blue><i>--glue ("{":"-":ss) = ("{-"++c): glue rest -- nested comment</i></font>-<a name="line-46"></a><font color=Blue><i>-- where (c,rest) = nestcomment 0 ss</i></font>+<a name="line-45"></a><font color=Blue>--glue ("{":"-":ss) = ("{-"++c): glue rest -- nested comment</font>+<a name="line-46"></a><font color=Blue>-- where (c,rest) = nestcomment 0 ss</font> <a name="line-47"></a>glue <font color=Cyan>(</font><font color=Magenta>"("</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>case</font></u> rest <u><font color=Green>of</font></u> <a name="line-48"></a> <font color=Magenta>")"</font><b><font color=Red>:</font></b>rest <font color=Red>-></font> <font color=Cyan>(</font><font color=Magenta>"("</font> <font color=Cyan>++</font> concat tuple <font color=Cyan>++</font> <font color=Magenta>")"</font><font color=Cyan>)</font> <b><font color=Red>:</font></b> glue rest <a name="line-49"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <font color=Magenta>"("</font> <b><font color=Red>:</font></b> glue ss@@ -61,12 +61,12 @@ <a name="line-54"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> s<b><font color=Red>:</font></b> glue ss <a name="line-55"></a>glue [] <font color=Red>=</font> [] <a name="line-56"></a>-<a name="line-57"></a><a name="nestcomment"></a><font color=Blue><i>-- Deal with comments.</i></font>+<a name="line-57"></a><a name="nestcomment"></a><font color=Blue>-- Deal with comments.</font> <a name="line-58"></a>nestcomment <font color=Red>::</font> Int <font color=Red>-></font> String <font color=Red>-></font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font> <a name="line-59"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>>=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"{-"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font> <a name="line-60"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> ss <a name="line-61"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>></font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>-<a name="line-62"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Blue><i>-</i></font><font color=Magenta>1</font><font color=Cyan>)</font> ss+<a name="line-62"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> ss <a name="line-63"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>==</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>,</font>ss<font color=Cyan>)</font> <a name="line-64"></a>nestcomment n <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>>=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font>s<b><font color=Red>:</font></b>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font> <a name="line-65"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment n ss@@ -78,7 +78,7 @@ <a name="line-71"></a>eolcomment <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>,</font> s'<font color=Cyan>)</font> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment s <a name="line-72"></a>eolcomment [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font> <a name="line-73"></a>-<a name="line-74"></a><a name="TokenType"></a><font color=Blue><i>-- | Classification of tokens as lexical entities</i></font>+<a name="line-74"></a><a name="TokenType"></a><font color=Blue>-- | Classification of tokens as lexical entities</font> <a name="line-75"></a><a name="TokenType"></a><u><font color=Green>data</font></u> TokenType <font color=Red>=</font> <a name="line-76"></a> Space <font color=Red>|</font> Keyword <font color=Red>|</font> Keyglyph <font color=Red>|</font> Layout <font color=Red>|</font> Comment <font color=Red>|</font> Conid <font color=Red>|</font> Varid <font color=Red>|</font> <a name="line-77"></a> Conop <font color=Red>|</font> Varop <font color=Red>|</font> String <font color=Red>|</font> Char <font color=Red>|</font> Number <font color=Red>|</font> Cpp <font color=Red>|</font> Error <font color=Red>|</font>@@ -90,7 +90,7 @@ <a name="line-83"></a> <font color=Red>|</font> isSpace h <font color=Red>=</font> Space <a name="line-84"></a> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Red>=</font> Comment <a name="line-85"></a> <font color=Red>|</font> <font color=Magenta>"--"</font> <font color=Cyan>`isPrefixOf`</font> s-<a name="line-86"></a> <font color=Cyan>&&</font> any isSpace s <font color=Red>=</font> Comment <font color=Blue><i>-- not fully correct</i></font>+<a name="line-86"></a> <font color=Cyan>&&</font> any isSpace s <font color=Red>=</font> Comment <font color=Blue>-- not fully correct</font> <a name="line-87"></a> <font color=Red>|</font> <font color=Magenta>"{-"</font> <font color=Cyan>`isPrefixOf`</font> s <font color=Red>=</font> Comment <a name="line-88"></a> <font color=Red>|</font> s <font color=Cyan>`elem`</font> keywords <font color=Red>=</font> Keyword <a name="line-89"></a> <font color=Red>|</font> s <font color=Cyan>`elem`</font> keyglyphs <font color=Red>=</font> Keyglyph@@ -114,7 +114,7 @@ <a name="line-107"></a>isTupleTail <u><font color=Green>_</font></u> <font color=Red>=</font> False <a name="line-108"></a> <a name="line-109"></a>-<a name="line-110"></a><a name="keywords"></a><font color=Blue><i>-- Haskell keywords</i></font>+<a name="line-110"></a><a name="keywords"></a><font color=Blue>-- Haskell keywords</font> <a name="line-111"></a>keywords <font color=Red>=</font> <a name="line-112"></a> <font color=Red>[</font><font color=Magenta>"case"</font><font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>,</font><font color=Magenta>"data"</font><font color=Cyan>,</font><font color=Magenta>"default"</font><font color=Cyan>,</font><font color=Magenta>"deriving"</font><font color=Cyan>,</font><font color=Magenta>"do"</font><font color=Cyan>,</font><font color=Magenta>"else"</font><font color=Cyan>,</font><font color=Magenta>"forall"</font> <a name="line-113"></a> <font color=Cyan>,</font><font color=Magenta>"if"</font><font color=Cyan>,</font><font color=Magenta>"import"</font><font color=Cyan>,</font><font color=Magenta>"in"</font><font color=Cyan>,</font><font color=Magenta>"infix"</font><font color=Cyan>,</font><font color=Magenta>"infixl"</font><font color=Cyan>,</font><font color=Magenta>"infixr"</font><font color=Cyan>,</font><font color=Magenta>"instance"</font><font color=Cyan>,</font><font color=Magenta>"let"</font><font color=Cyan>,</font><font color=Magenta>"module"</font>
docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html view
@@ -10,11 +10,11 @@ <a name="line-3"></a> <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font> <a name="line-4"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-5"></a>-<a name="line-6"></a><a name="Colour"></a><font color=Blue><i>-- | Colours supported by ANSI codes.</i></font>+<a name="line-6"></a><a name="Colour"></a><font color=Blue>-- | Colours supported by ANSI codes.</font> <a name="line-7"></a><a name="Colour"></a><u><font color=Green>data</font></u> Colour <font color=Red>=</font> Black <font color=Red>|</font> Red <font color=Red>|</font> Green <font color=Red>|</font> Yellow <font color=Red>|</font> Blue <font color=Red>|</font> Magenta <font color=Red>|</font> Cyan <font color=Red>|</font> White <a name="line-8"></a> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>,</font>Enum<font color=Cyan>)</font> <a name="line-9"></a>-<a name="line-10"></a><a name="Highlight"></a><font color=Blue><i>-- | Types of highlighting supported by ANSI codes (and some extra styles).</i></font>+<a name="line-10"></a><a name="Highlight"></a><font color=Blue>-- | Types of highlighting supported by ANSI codes (and some extra styles).</font> <a name="line-11"></a><a name="Highlight"></a><u><font color=Green>data</font></u> Highlight <font color=Red>=</font> <a name="line-12"></a> Normal <a name="line-13"></a> <font color=Red>|</font> Bold@@ -25,7 +25,7 @@ <a name="line-18"></a> <font color=Red>|</font> Concealed <a name="line-19"></a> <font color=Red>|</font> Foreground Colour <a name="line-20"></a> <font color=Red>|</font> Background Colour-<a name="line-21"></a> <font color=Blue><i>-- Above are ANSI-only. Below are extra styles.</i></font>+<a name="line-21"></a> <font color=Blue>-- Above are ANSI-only. Below are extra styles.</font> <a name="line-22"></a> <font color=Red>|</font> Italic <a name="line-23"></a> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font> <a name="line-24"></a>
docs/hscolour/Language/Haskell/HsColour/Colourise.html view
@@ -9,81 +9,82 @@ <a name="line-2"></a> <font color=Cyan>(</font> <u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight <a name="line-3"></a> <font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font> <a name="line-4"></a> <font color=Cyan>,</font> readColourPrefs-<a name="line-5"></a> <font color=Cyan>,</font> colourise-<a name="line-6"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u>-<a name="line-7"></a>-<a name="line-8"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight-<a name="line-9"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <font color=Cyan>(</font>TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-10"></a>-<a name="line-11"></a><u><font color=Green>import</font></u> IO <font color=Cyan>(</font>hPutStrLn<font color=Cyan>,</font>stderr<font color=Cyan>)</font>-<a name="line-12"></a><u><font color=Green>import</font></u> System <font color=Cyan>(</font>getEnv<font color=Cyan>)</font>-<a name="line-13"></a><u><font color=Green>import</font></u> List-<a name="line-14"></a>-<a name="line-15"></a><a name="ColourPrefs"></a><font color=Blue><i>-- | Colour preferences.</i></font>-<a name="line-16"></a><a name="ColourPrefs"></a><u><font color=Green>data</font></u> ColourPrefs <font color=Red>=</font> ColourPrefs-<a name="line-17"></a> <font color=Cyan>{</font> keyword<font color=Cyan>,</font> keyglyph<font color=Cyan>,</font> layout<font color=Cyan>,</font> comment-<a name="line-18"></a> <font color=Cyan>,</font> conid<font color=Cyan>,</font> varid<font color=Cyan>,</font> conop<font color=Cyan>,</font> varop-<a name="line-19"></a> <font color=Cyan>,</font> string<font color=Cyan>,</font> char<font color=Cyan>,</font> number<font color=Cyan>,</font> cpp-<a name="line-20"></a> <font color=Cyan>,</font> selection<font color=Cyan>,</font> variantselection<font color=Cyan>,</font> definition <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font>-<a name="line-21"></a> <font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>-<a name="line-22"></a>-<a name="line-23"></a><a name="defaultColourPrefs"></a>defaultColourPrefs <font color=Red>=</font> ColourPrefs-<a name="line-24"></a> <font color=Cyan>{</font> keyword <font color=Red>=</font> <font color=Red>[</font>Foreground Green<font color=Cyan>,</font>Underscore<font color=Red>]</font>-<a name="line-25"></a> <font color=Cyan>,</font> keyglyph <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Red>]</font>-<a name="line-26"></a> <font color=Cyan>,</font> layout <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>-<a name="line-27"></a> <font color=Cyan>,</font> comment <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Cyan>,</font> Italic<font color=Red>]</font>-<a name="line-28"></a> <font color=Cyan>,</font> conid <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-<a name="line-29"></a> <font color=Cyan>,</font> varid <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-<a name="line-30"></a> <font color=Cyan>,</font> conop <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Cyan>,</font>Bold<font color=Red>]</font>-<a name="line-31"></a> <font color=Cyan>,</font> varop <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>-<a name="line-32"></a> <font color=Cyan>,</font> string <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-<a name="line-33"></a> <font color=Cyan>,</font> char <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-<a name="line-34"></a> <font color=Cyan>,</font> number <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-<a name="line-35"></a> <font color=Cyan>,</font> cpp <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Cyan>,</font>Dim<font color=Red>]</font>-<a name="line-36"></a> <font color=Cyan>,</font> selection <font color=Red>=</font> <font color=Red>[</font>Bold<font color=Cyan>,</font> Foreground Magenta<font color=Red>]</font>-<a name="line-37"></a> <font color=Cyan>,</font> variantselection <font color=Red>=</font> <font color=Red>[</font>Dim<font color=Cyan>,</font> Foreground Red<font color=Cyan>,</font> Underscore<font color=Red>]</font>-<a name="line-38"></a> <font color=Cyan>,</font> definition <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>-<a name="line-39"></a> <font color=Cyan>}</font>-<a name="line-40"></a>-<a name="line-41"></a><a name="parseColourPrefs"></a><font color=Blue><i>-- NOTE, should we give a warning message on a failed reading?</i></font>-<a name="line-42"></a>parseColourPrefs <font color=Red>::</font> String <font color=Red>-></font> String <font color=Red>-></font> IO ColourPrefs-<a name="line-43"></a>parseColourPrefs file x <font color=Red>=</font>-<a name="line-44"></a> <u><font color=Green>case</font></u> reads x <u><font color=Green>of</font></u>-<a name="line-45"></a> <font color=Cyan>(</font>res<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u> <font color=Red>-></font> return res-<a name="line-46"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <u><font color=Green>do</font></u> hPutStrLn stderr <font color=Cyan>(</font><font color=Magenta>"Could not parse colour prefs from "</font><font color=Cyan>++</font>file-<a name="line-47"></a> <font color=Cyan>++</font><font color=Magenta>": reverting to defaults"</font><font color=Cyan>)</font>-<a name="line-48"></a> return defaultColourPrefs-<a name="line-49"></a>-<a name="line-50"></a><a name="readColourPrefs"></a><font color=Blue><i>-- | Read colour preferences from .hscolour file in the current directory, or failing that,</i></font>-<a name="line-51"></a><font color=Blue><i>-- from \$HOME\/.hscolour, and failing that, returns a default set of prefs.</i></font>-<a name="line-52"></a>readColourPrefs <font color=Red>::</font> IO ColourPrefs-<a name="line-53"></a>readColourPrefs <font color=Red>=</font> catch-<a name="line-54"></a> <font color=Cyan>(</font><u><font color=Green>do</font></u> val <font color=Red><-</font> readFile <font color=Magenta>".hscolour"</font>-<a name="line-55"></a> parseColourPrefs <font color=Magenta>".hscolour"</font> val<font color=Cyan>)</font>-<a name="line-56"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> catch-<a name="line-57"></a> <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red><-</font> getEnv <font color=Magenta>"HOME"</font>-<a name="line-58"></a> val <font color=Red><-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>-<a name="line-59"></a> parseColourPrefs <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font> val<font color=Cyan>)</font>-<a name="line-60"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-61"></a>-<a name="line-62"></a><a name="colourise"></a><font color=Blue><i>-- | Convert token classification to colour highlights.</i></font>-<a name="line-63"></a>colourise <font color=Red>::</font> ColourPrefs <font color=Red>-></font> TokenType <font color=Red>-></font> <font color=Red>[</font>Highlight<font color=Red>]</font>-<a name="line-64"></a>colourise pref Space <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-<a name="line-65"></a>colourise pref Comment <font color=Red>=</font> comment pref-<a name="line-66"></a>colourise pref Keyword <font color=Red>=</font> keyword pref-<a name="line-67"></a>colourise pref Keyglyph <font color=Red>=</font> keyglyph pref-<a name="line-68"></a>colourise pref Layout <font color=Red>=</font> layout pref-<a name="line-69"></a>colourise pref Conid <font color=Red>=</font> conid pref-<a name="line-70"></a>colourise pref Varid <font color=Red>=</font> varid pref-<a name="line-71"></a>colourise pref Conop <font color=Red>=</font> conop pref-<a name="line-72"></a>colourise pref Varop <font color=Red>=</font> varop pref-<a name="line-73"></a>colourise pref String <font color=Red>=</font> string pref-<a name="line-74"></a>colourise pref Char <font color=Red>=</font> char pref-<a name="line-75"></a>colourise pref Number <font color=Red>=</font> number pref-<a name="line-76"></a>colourise pref Cpp <font color=Red>=</font> cpp pref-<a name="line-77"></a>colourise pref Error <font color=Red>=</font> selection pref-<a name="line-78"></a>colourise pref Definition <font color=Red>=</font> definition pref-<a name="line-79"></a>+<a name="line-5"></a> <font color=Cyan>,</font> defaultColourPrefs+<a name="line-6"></a> <font color=Cyan>,</font> colourise+<a name="line-7"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u>+<a name="line-8"></a>+<a name="line-9"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight+<a name="line-10"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <font color=Cyan>(</font>TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-11"></a>+<a name="line-12"></a><u><font color=Green>import</font></u> IO <font color=Cyan>(</font>hPutStrLn<font color=Cyan>,</font>stderr<font color=Cyan>)</font>+<a name="line-13"></a><u><font color=Green>import</font></u> System <font color=Cyan>(</font>getEnv<font color=Cyan>)</font>+<a name="line-14"></a><u><font color=Green>import</font></u> List+<a name="line-15"></a>+<a name="line-16"></a><a name="ColourPrefs"></a><font color=Blue>-- | Colour preferences.</font>+<a name="line-17"></a><a name="ColourPrefs"></a><u><font color=Green>data</font></u> ColourPrefs <font color=Red>=</font> ColourPrefs+<a name="line-18"></a> <font color=Cyan>{</font> keyword<font color=Cyan>,</font> keyglyph<font color=Cyan>,</font> layout<font color=Cyan>,</font> comment+<a name="line-19"></a> <font color=Cyan>,</font> conid<font color=Cyan>,</font> varid<font color=Cyan>,</font> conop<font color=Cyan>,</font> varop+<a name="line-20"></a> <font color=Cyan>,</font> string<font color=Cyan>,</font> char<font color=Cyan>,</font> number<font color=Cyan>,</font> cpp+<a name="line-21"></a> <font color=Cyan>,</font> selection<font color=Cyan>,</font> variantselection<font color=Cyan>,</font> definition <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font>+<a name="line-22"></a> <font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>,</font>Read<font color=Cyan>)</font>+<a name="line-23"></a>+<a name="line-24"></a><a name="defaultColourPrefs"></a>defaultColourPrefs <font color=Red>=</font> ColourPrefs+<a name="line-25"></a> <font color=Cyan>{</font> keyword <font color=Red>=</font> <font color=Red>[</font>Foreground Green<font color=Cyan>,</font>Underscore<font color=Red>]</font>+<a name="line-26"></a> <font color=Cyan>,</font> keyglyph <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Red>]</font>+<a name="line-27"></a> <font color=Cyan>,</font> layout <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>+<a name="line-28"></a> <font color=Cyan>,</font> comment <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Cyan>,</font> Italic<font color=Red>]</font>+<a name="line-29"></a> <font color=Cyan>,</font> conid <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>+<a name="line-30"></a> <font color=Cyan>,</font> varid <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>+<a name="line-31"></a> <font color=Cyan>,</font> conop <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Cyan>,</font>Bold<font color=Red>]</font>+<a name="line-32"></a> <font color=Cyan>,</font> varop <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>+<a name="line-33"></a> <font color=Cyan>,</font> string <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>+<a name="line-34"></a> <font color=Cyan>,</font> char <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>+<a name="line-35"></a> <font color=Cyan>,</font> number <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>+<a name="line-36"></a> <font color=Cyan>,</font> cpp <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Cyan>,</font>Dim<font color=Red>]</font>+<a name="line-37"></a> <font color=Cyan>,</font> selection <font color=Red>=</font> <font color=Red>[</font>Bold<font color=Cyan>,</font> Foreground Magenta<font color=Red>]</font>+<a name="line-38"></a> <font color=Cyan>,</font> variantselection <font color=Red>=</font> <font color=Red>[</font>Dim<font color=Cyan>,</font> Foreground Red<font color=Cyan>,</font> Underscore<font color=Red>]</font>+<a name="line-39"></a> <font color=Cyan>,</font> definition <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>+<a name="line-40"></a> <font color=Cyan>}</font>+<a name="line-41"></a>+<a name="line-42"></a><a name="parseColourPrefs"></a><font color=Blue>-- NOTE, should we give a warning message on a failed reading?</font>+<a name="line-43"></a>parseColourPrefs <font color=Red>::</font> String <font color=Red>-></font> String <font color=Red>-></font> IO ColourPrefs+<a name="line-44"></a>parseColourPrefs file x <font color=Red>=</font>+<a name="line-45"></a> <u><font color=Green>case</font></u> reads x <u><font color=Green>of</font></u>+<a name="line-46"></a> <font color=Cyan>(</font>res<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u> <font color=Red>-></font> return res+<a name="line-47"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <u><font color=Green>do</font></u> hPutStrLn stderr <font color=Cyan>(</font><font color=Magenta>"Could not parse colour prefs from "</font><font color=Cyan>++</font>file+<a name="line-48"></a> <font color=Cyan>++</font><font color=Magenta>": reverting to defaults"</font><font color=Cyan>)</font>+<a name="line-49"></a> return defaultColourPrefs+<a name="line-50"></a>+<a name="line-51"></a><a name="readColourPrefs"></a><font color=Blue>-- | Read colour preferences from .hscolour file in the current directory, or failing that,</font>+<a name="line-52"></a><font color=Blue>-- from \$HOME\/.hscolour, and failing that, returns a default set of prefs.</font>+<a name="line-53"></a>readColourPrefs <font color=Red>::</font> IO ColourPrefs+<a name="line-54"></a>readColourPrefs <font color=Red>=</font> catch+<a name="line-55"></a> <font color=Cyan>(</font><u><font color=Green>do</font></u> val <font color=Red><-</font> readFile <font color=Magenta>".hscolour"</font>+<a name="line-56"></a> parseColourPrefs <font color=Magenta>".hscolour"</font> val<font color=Cyan>)</font>+<a name="line-57"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> catch+<a name="line-58"></a> <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red><-</font> getEnv <font color=Magenta>"HOME"</font>+<a name="line-59"></a> val <font color=Red><-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>+<a name="line-60"></a> parseColourPrefs <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="line-61"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-62"></a>+<a name="line-63"></a><a name="colourise"></a><font color=Blue>-- | Convert token classification to colour highlights.</font>+<a name="line-64"></a>colourise <font color=Red>::</font> ColourPrefs <font color=Red>-></font> TokenType <font color=Red>-></font> <font color=Red>[</font>Highlight<font color=Red>]</font>+<a name="line-65"></a>colourise pref Space <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>+<a name="line-66"></a>colourise pref Comment <font color=Red>=</font> comment pref+<a name="line-67"></a>colourise pref Keyword <font color=Red>=</font> keyword pref+<a name="line-68"></a>colourise pref Keyglyph <font color=Red>=</font> keyglyph pref+<a name="line-69"></a>colourise pref Layout <font color=Red>=</font> layout pref+<a name="line-70"></a>colourise pref Conid <font color=Red>=</font> conid pref+<a name="line-71"></a>colourise pref Varid <font color=Red>=</font> varid pref+<a name="line-72"></a>colourise pref Conop <font color=Red>=</font> conop pref+<a name="line-73"></a>colourise pref Varop <font color=Red>=</font> varop pref+<a name="line-74"></a>colourise pref String <font color=Red>=</font> string pref+<a name="line-75"></a>colourise pref Char <font color=Red>=</font> char pref+<a name="line-76"></a>colourise pref Number <font color=Red>=</font> number pref+<a name="line-77"></a>colourise pref Cpp <font color=Red>=</font> cpp pref+<a name="line-78"></a>colourise pref Error <font color=Red>=</font> selection pref+<a name="line-79"></a>colourise pref Definition <font color=Red>=</font> definition pref+<a name="line-80"></a> </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/HTML.html view
@@ -5,10 +5,10 @@ <title>Language/Haskell/HsColour/HTML.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Formats Haskell source code using HTML with font tags.</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <a name="line-3"></a> <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> -<a name="line-4"></a> <font color=Blue><i>-- * Internals</i></font>+<a name="line-4"></a> <font color=Blue>-- * Internals</font> <a name="line-5"></a> renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> renderNewLinesAnchors<font color=Cyan>,</font> escape<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-6"></a> <a name="line-7"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors@@ -18,13 +18,13 @@ <a name="line-11"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font> <a name="line-12"></a> <a name="line-13"></a>-<a name="line-14"></a><a name="hscolour"></a><font color=Blue><i>-- | Formats Haskell source code using HTML with font tags.</i></font>-<a name="line-15"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences.</i></font>-<a name="line-16"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether to include anchors.</i></font>-<a name="line-17"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output should be partial.</i></font>-<a name="line-18"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Title for webpage output.</i></font>-<a name="line-19"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-20"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Coloured Haskell source code.</i></font>+<a name="line-14"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>+<a name="line-15"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>+<a name="line-16"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-17"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial.</font>+<a name="line-18"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for webpage output.</font>+<a name="line-19"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-20"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font> <a name="line-21"></a>hscolour pref anchor partial title <font color=Red>=</font> <a name="line-22"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font> <a name="line-23"></a> <font color=Cyan>.</font> pre@@ -49,13 +49,13 @@ <a name="line-42"></a>renderAnchors <u><font color=Green>_</font></u> <font color=Cyan>(</font>Left v<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"<a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"></a>"</font> <a name="line-43"></a>renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r <a name="line-44"></a>-<a name="line-45"></a><a name="renderComment"></a><font color=Blue><i>-- if there are <a href="http://links/">http://links/</a> in a comment, turn them into</i></font>-<a name="line-46"></a><font color=Blue><i>-- hyperlinks</i></font>+<a name="line-45"></a><a name="renderComment"></a><font color=Blue>-- if there are <a href="http://links/">http://links/</a> in a comment, turn them into</font>+<a name="line-46"></a><font color=Blue>-- hyperlinks</font> <a name="line-47"></a>renderComment <font color=Red>::</font> String <font color=Red>-></font> String <a name="line-48"></a>renderComment xs<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'h'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'p'</font><b><font color=Red>:</font></b><font color=Magenta>':'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> <a name="line-49"></a> renderLink a <font color=Cyan>++</font> renderComment b <a name="line-50"></a> <u><font color=Green>where</font></u>-<a name="line-51"></a> <font color=Blue><i>-- see <a href="http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters">http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</a></i></font>+<a name="line-51"></a> <font color=Blue>-- see <a href="http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters">http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</a></font> <a name="line-52"></a> isUrlChar x <font color=Red>=</font> isAlphaNum x <font color=Cyan>||</font> x <font color=Cyan>`elem`</font> <font color=Magenta>":/?#[]@!$&'()*+,;=-._~%"</font> <a name="line-53"></a> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> span isUrlChar xs <a name="line-54"></a> renderLink link <font color=Red>=</font> <font color=Magenta>"<a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\">"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"</a>"</font>@@ -67,7 +67,7 @@ <a name="line-60"></a>renderNewLinesAnchors <font color=Red>=</font> unlines <font color=Cyan>.</font> map render <font color=Cyan>.</font> zip <font color=Red>[</font><font color=Magenta>1</font><font color=Red>..</font><font color=Red>]</font> <font color=Cyan>.</font> lines <a name="line-61"></a> <u><font color=Green>where</font></u> render <font color=Cyan>(</font>line<font color=Cyan>,</font> s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"<a name=\"line-"</font> <font color=Cyan>++</font> show line <font color=Cyan>++</font> <font color=Magenta>"\"></a>"</font> <font color=Cyan>++</font> s <a name="line-62"></a>-<a name="line-63"></a><a name="fontify"></a><font color=Blue><i>-- Html stuff</i></font>+<a name="line-63"></a><a name="fontify"></a><font color=Blue>-- Html stuff</font> <a name="line-64"></a>fontify [] s <font color=Red>=</font> s <a name="line-65"></a>fontify <font color=Cyan>(</font>h<b><font color=Red>:</font></b>hs<font color=Cyan>)</font> s <font color=Red>=</font> font h <font color=Cyan>(</font>fontify hs s<font color=Cyan>)</font> <a name="line-66"></a>
docs/hscolour/Language/Haskell/HsColour/InlineCSS.html view
@@ -5,7 +5,7 @@ <title>Language/Haskell/HsColour/InlineCSS.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Formats Haskell source code as HTML with inline CSS.</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code as HTML with inline CSS.</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>InlineCSS <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-3"></a> <a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors@@ -14,15 +14,15 @@ <a name="line-7"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <font color=Cyan>(</font>renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> <a name="line-8"></a> renderNewLinesAnchors<font color=Cyan>,</font> escape<font color=Cyan>)</font> <a name="line-9"></a>-<a name="line-10"></a><a name="hscolour"></a><font color=Blue><i>-- | Formats Haskell source code as a complete HTML document with inline styling</i></font>-<a name="line-11"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue><i>-- ^ Preferences for styling.</i></font>-<a name="line-12"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether to include anchors.</i></font>-<a name="line-13"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output should be partial</i></font>-<a name="line-14"></a> <font color=Blue><i>-- (= no document headers will be included.)</i></font>-<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Title for HTML page.</i></font>-<a name="line-16"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-17"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ An HTML document containing the coloured </i></font>-<a name="line-18"></a> <font color=Blue><i>-- Haskell source code.</i></font>+<a name="line-10"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete HTML document with inline styling</font>+<a name="line-11"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Preferences for styling.</font>+<a name="line-12"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-13"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial</font>+<a name="line-14"></a> <font color=Blue>-- (= no document headers will be included.)</font>+<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for HTML page.</font>+<a name="line-16"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-17"></a> <font color=Red>-></font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>+<a name="line-18"></a> <font color=Blue>-- Haskell source code.</font> <a name="line-19"></a>hscolour prefs anchor partial title <font color=Red>=</font> <a name="line-20"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font> <a name="line-21"></a> <font color=Cyan>.</font> pre
docs/hscolour/Language/Haskell/HsColour/LaTeX.html view
@@ -5,19 +5,19 @@ <title>Language/Haskell/HsColour/LaTeX.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Formats Haskell source code using LaTeX macros.</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using LaTeX macros.</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-3"></a> <a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify <a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>General <a name="line-7"></a>-<a name="line-8"></a><a name="hscolour"></a><font color=Blue><i>-- | Formats Haskell source code as a complete LaTeX document.</i></font>-<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences.</i></font>-<a name="line-10"></a> <font color=Red>-></font> Bool <font color=Blue><i>-- ^ Whether output should be partial (= no prologue).</i></font>-<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-12"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ A LaTeX document\/fragment containing the coloured </i></font>-<a name="line-13"></a> <font color=Blue><i>-- Haskell source code.</i></font>+<a name="line-8"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete LaTeX document.</font>+<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>+<a name="line-10"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial (= no prologue).</font>+<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-12"></a> <font color=Red>-></font> String <font color=Blue>-- ^ A LaTeX document\/fragment containing the coloured </font>+<a name="line-13"></a> <font color=Blue>-- Haskell source code.</font> <a name="line-14"></a>hscolour pref partial <font color=Red>=</font> <a name="line-15"></a> <font color=Cyan>(</font> <u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail<font color=Cyan>)</font> <a name="line-16"></a> <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font>@@ -26,8 +26,8 @@ <a name="line-19"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-></font> String <a name="line-20"></a>top'n'tail <font color=Red>=</font> <font color=Cyan>(</font>latexPrefix<font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>latexSuffix<font color=Cyan>)</font> <a name="line-21"></a>-<a name="line-22"></a><a name="renderToken"></a><font color=Blue><i>-- | Wrap each lexeme in the appropriate LaTeX macro.</i></font>-<a name="line-23"></a><font color=Blue><i>-- TODO: filter dangerous characters like "{}_$"</i></font>+<a name="line-22"></a><a name="renderToken"></a><font color=Blue>-- | Wrap each lexeme in the appropriate LaTeX macro.</font>+<a name="line-23"></a><font color=Blue>-- TODO: filter dangerous characters like "{}_$"</font> <a name="line-24"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String <a name="line-25"></a>renderToken pref <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> filterSpace text <a name="line-26"></a>renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>@@ -38,7 +38,7 @@ <a name="line-31"></a> <font color=Cyan>(</font>pre<font color=Cyan>,</font> post<font color=Cyan>)</font> <font color=Red>=</font> unzip <font color=Cyan>$</font> map latexHighlight style <a name="line-32"></a> <u><font color=Green>in</font></u> concat pre <font color=Cyan>++</font> filterSpecial symb <font color=Cyan>++</font> concat post <a name="line-33"></a>-<a name="line-34"></a><a name="filterSpace"></a><font color=Blue><i>-- | Filter white space characters.</i></font>+<a name="line-34"></a><a name="filterSpace"></a><font color=Blue>-- | Filter white space characters.</font> <a name="line-35"></a>filterSpace <font color=Red>::</font> String <a name="line-36"></a> <font color=Red>-></font> String <a name="line-37"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>@@ -47,10 +47,10 @@ <a name="line-40"></a>filterSpace <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> c<b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font> <a name="line-41"></a>filterSpace [] <font color=Red>=</font> [] <a name="line-42"></a>-<a name="line-43"></a><a name="filterSpecial"></a><font color=Blue><i>-- | Filters the characters "#$%&~_^\{}" which are special</i></font>-<a name="line-44"></a><font color=Blue><i>-- in LaTeX.</i></font>-<a name="line-45"></a>filterSpecial <font color=Red>::</font> String <font color=Blue><i>-- ^ The string to filter. </i></font>-<a name="line-46"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ The LaTeX-safe string.</i></font>+<a name="line-43"></a><a name="filterSpecial"></a><font color=Blue>-- | Filters the characters "#$%&~_^\{}" which are special</font>+<a name="line-44"></a><font color=Blue>-- in LaTeX.</font>+<a name="line-45"></a>filterSpecial <font color=Red>::</font> String <font color=Blue>-- ^ The string to filter. </font>+<a name="line-46"></a> <font color=Red>-></font> String <font color=Blue>-- ^ The LaTeX-safe string.</font> <a name="line-47"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'#'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'#'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font> <a name="line-48"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'$'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'$'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font> <a name="line-49"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'%'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'%'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>@@ -70,7 +70,7 @@ <a name="line-63"></a>filterSpecial [] <font color=Red>=</font> [] <a name="line-64"></a> <a name="line-65"></a>-<a name="line-66"></a><a name="latexHighlight"></a><font color=Blue><i>-- | Constructs the appropriate LaTeX macro for the given style.</i></font>+<a name="line-66"></a><a name="latexHighlight"></a><font color=Blue>-- | Constructs the appropriate LaTeX macro for the given style.</font> <a name="line-67"></a>latexHighlight <font color=Red>::</font> Highlight <font color=Red>-></font> <font color=Cyan>(</font>String<font color=Cyan>,</font> String<font color=Cyan>)</font> <a name="line-68"></a>latexHighlight Normal <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\rm{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font> <a name="line-69"></a>latexHighlight Bold <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\bf{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>@@ -83,7 +83,7 @@ <a name="line-76"></a>latexHighlight <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\colorbox{"</font><font color=Cyan>++</font> latexColour c <font color=Cyan>++</font><font color=Magenta>"}{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font> <a name="line-77"></a>latexHighlight Italic <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\it{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font> <a name="line-78"></a>-<a name="line-79"></a><a name="latexColour"></a><font color=Blue><i>-- | Translate a 'Colour' into a LaTeX colour name.</i></font>+<a name="line-79"></a><a name="latexColour"></a><font color=Blue>-- | Translate a 'Colour' into a LaTeX colour name.</font> <a name="line-80"></a>latexColour <font color=Red>::</font> Colour <font color=Red>-></font> String <a name="line-81"></a>latexColour Black <font color=Red>=</font> <font color=Magenta>"black"</font> <a name="line-82"></a>latexColour Red <font color=Red>=</font> <font color=Magenta>"red"</font>@@ -94,7 +94,7 @@ <a name="line-87"></a>latexColour Cyan <font color=Red>=</font> <font color=Magenta>"cyan"</font> <a name="line-88"></a>latexColour White <font color=Red>=</font> <font color=Magenta>"white"</font> <a name="line-89"></a>-<a name="line-90"></a><a name="latexPrefix"></a><font color=Blue><i>-- | Generic LaTeX document preamble.</i></font>+<a name="line-90"></a><a name="latexPrefix"></a><font color=Blue>-- | Generic LaTeX document preamble.</font> <a name="line-91"></a>latexPrefix <font color=Red>=</font> unlines <a name="line-92"></a> <font color=Red>[</font><font color=Magenta>"\\documentclass[a4paper, 12pt]{article}"</font> <a name="line-93"></a> <font color=Cyan>,</font><font color=Magenta>"\\usepackage[usenames]{color}"</font>@@ -110,7 +110,7 @@ <a name="line-103"></a> <font color=Cyan>,</font><font color=Magenta>"\\noindent"</font> <a name="line-104"></a> <font color=Red>]</font> <a name="line-105"></a>-<a name="line-106"></a><a name="latexSuffix"></a><font color=Blue><i>-- | Generic LaTeX document postamble.</i></font>+<a name="line-106"></a><a name="latexSuffix"></a><font color=Blue>-- | Generic LaTeX document postamble.</font> <a name="line-107"></a>latexSuffix <font color=Red>=</font> unlines <a name="line-108"></a> <font color=Red>[</font><font color=Magenta>""</font> <a name="line-109"></a> <font color=Cyan>,</font><font color=Magenta>"\\end{document}"</font>
docs/hscolour/Language/Haskell/HsColour/MIRC.html view
@@ -5,8 +5,8 @@ <title>Language/Haskell/HsColour/MIRC.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Formats Haskell source code using mIRC codes.</i></font>-<a name="line-2"></a><font color=Blue><i>-- (see http:\/\/irssi.org\/documentation\/formats)</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code using mIRC codes.</font>+<a name="line-2"></a><font color=Blue>-- (see http:\/\/irssi.org\/documentation\/formats)</font> <a name="line-3"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>MIRC <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-4"></a> <a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify@@ -15,17 +15,17 @@ <a name="line-8"></a><u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font> <a name="line-9"></a> <a name="line-10"></a>-<a name="line-11"></a><a name="hscolour"></a><font color=Blue><i>-- | Formats Haskell source code using mIRC codes.</i></font>-<a name="line-12"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences.</i></font>-<a name="line-13"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Coloured Haskell source code.</i></font>+<a name="line-11"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code using mIRC codes.</font>+<a name="line-12"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>+<a name="line-13"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font> <a name="line-15"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise <a name="line-16"></a> <a name="line-17"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String <a name="line-18"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> fontify <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s <a name="line-19"></a> <a name="line-20"></a>-<a name="line-21"></a><a name="fontify"></a><font color=Blue><i>-- mIRC stuff</i></font>+<a name="line-21"></a><a name="fontify"></a><font color=Blue>-- mIRC stuff</font> <a name="line-22"></a>fontify hs <font color=Red>=</font> <a name="line-23"></a> mircColours <font color=Cyan>(</font>joinColours hs<font color=Cyan>)</font> <a name="line-24"></a> <font color=Cyan>.</font> highlight <font color=Cyan>(</font>filter <font color=Cyan>(</font><font color=Cyan>`elem`</font><font color=Red>[</font>Normal<font color=Cyan>,</font>Bold<font color=Cyan>,</font>Underscore<font color=Cyan>,</font>ReverseVideo<font color=Red>]</font><font color=Cyan>)</font> hs<font color=Cyan>)</font>@@ -38,7 +38,7 @@ <a name="line-31"></a> font Underscore s <font color=Red>=</font> <font color=Magenta>'\^_'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^_"</font> <a name="line-32"></a> font ReverseVideo s <font color=Red>=</font> <font color=Magenta>'\^V'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^V"</font> <a name="line-33"></a>-<a name="line-34"></a><a name="MircColour"></a><font color=Blue><i>-- mIRC combines colour codes in a non-modular way</i></font>+<a name="line-34"></a><a name="MircColour"></a><font color=Blue>-- mIRC combines colour codes in a non-modular way</font> <a name="line-35"></a><a name="MircColour"></a><u><font color=Green>data</font></u> MircColour <font color=Red>=</font> Mirc <font color=Cyan>{</font> fg<font color=Red>::</font>Colour<font color=Cyan>,</font> dim<font color=Red>::</font>Bool<font color=Cyan>,</font> bg<font color=Red>::</font>Maybe Colour<font color=Cyan>,</font> blink<font color=Red>::</font>Bool<font color=Cyan>}</font> <a name="line-36"></a> <a name="line-37"></a><a name="joinColours"></a>joinColours <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-></font> MircColour
docs/hscolour/Language/Haskell/HsColour/Options.html view
@@ -8,25 +8,22 @@ <pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Options <a name="line-2"></a> <font color=Cyan>(</font> Option<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font> <a name="line-3"></a> <font color=Cyan>,</font> Output<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-4"></a> <font color=Cyan>,</font> Literate<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-<a name="line-5"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u> -<a name="line-6"></a>-<a name="line-7"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Output-<a name="line-8"></a>-<a name="line-9"></a><a name="Option"></a><font color=Blue><i>-- | Command-line options</i></font>-<a name="line-10"></a><a name="Option"></a><u><font color=Green>data</font></u> Option <font color=Red>=</font>-<a name="line-11"></a> Help <font color=Blue><i>-- ^ print usage message</i></font>-<a name="line-12"></a> <font color=Red>|</font> Version <font color=Blue><i>-- ^ report version</i></font>-<a name="line-13"></a> <font color=Red>|</font> Information <font color=Blue><i>-- ^ report auxiliary information, e.g. CSS defaults</i></font>-<a name="line-14"></a> <font color=Red>|</font> Format Output <font color=Blue><i>-- ^ what type of output to produce</i></font>-<a name="line-15"></a> <font color=Red>|</font> LHS Literate <font color=Blue><i>-- ^ literate input (i.e. multiple embedded fragments)</i></font>-<a name="line-16"></a> <font color=Red>|</font> Anchors Bool <font color=Blue><i>-- ^ whether to add anchors</i></font>-<a name="line-17"></a> <font color=Red>|</font> Partial Bool <font color=Blue><i>-- ^ whether to produce a full document or partial</i></font>-<a name="line-18"></a> <font color=Red>|</font> Input FilePath <font color=Blue><i>-- ^ input source file</i></font>-<a name="line-19"></a> <font color=Red>|</font> Output FilePath <font color=Blue><i>-- ^ output source file</i></font>-<a name="line-20"></a> <u><font color=Green>deriving</font></u> Eq-<a name="line-21"></a>-<a name="line-22"></a><a name="Literate"></a><u><font color=Green>data</font></u> Literate <font color=Red>=</font> NoLit <font color=Red>|</font> Bird <font color=Red>|</font> TeX <u><font color=Green>deriving</font></u> Eq+<a name="line-4"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u> +<a name="line-5"></a>+<a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Output+<a name="line-7"></a>+<a name="line-8"></a><a name="Option"></a><font color=Blue>-- | Command-line options</font>+<a name="line-9"></a><a name="Option"></a><u><font color=Green>data</font></u> Option <font color=Red>=</font>+<a name="line-10"></a> Help <font color=Blue>-- ^ print usage message</font>+<a name="line-11"></a> <font color=Red>|</font> Version <font color=Blue>-- ^ report version</font>+<a name="line-12"></a> <font color=Red>|</font> Information <font color=Blue>-- ^ report auxiliary information, e.g. CSS defaults</font>+<a name="line-13"></a> <font color=Red>|</font> Format Output <font color=Blue>-- ^ what type of output to produce</font>+<a name="line-14"></a> <font color=Red>|</font> LHS Bool <font color=Blue>-- ^ literate input (i.e. multiple embedded fragments)</font>+<a name="line-15"></a> <font color=Red>|</font> Anchors Bool <font color=Blue>-- ^ whether to add anchors</font>+<a name="line-16"></a> <font color=Red>|</font> Partial Bool <font color=Blue>-- ^ whether to produce a full document or partial</font>+<a name="line-17"></a> <font color=Red>|</font> Input FilePath <font color=Blue>-- ^ input source file</font>+<a name="line-18"></a> <font color=Red>|</font> Output FilePath <font color=Blue>-- ^ output source file</font>+<a name="line-19"></a> <u><font color=Green>deriving</font></u> Eq </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/Output.html view
@@ -7,13 +7,13 @@ <body> <pre><a name="line-1"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Output <u><font color=Green>where</font></u> <a name="line-2"></a>-<a name="line-3"></a><a name="Output"></a><font color=Blue><i>-- | The supported output formats.</i></font>-<a name="line-4"></a><a name="Output"></a><u><font color=Green>data</font></u> Output <font color=Red>=</font> TTY <font color=Blue><i>-- ^ ANSI terminal codes</i></font>-<a name="line-5"></a> <font color=Red>|</font> LaTeX <font color=Blue><i>-- ^ TeX macros</i></font>-<a name="line-6"></a> <font color=Red>|</font> HTML <font color=Blue><i>-- ^ HTML with font tags</i></font>-<a name="line-7"></a> <font color=Red>|</font> CSS <font color=Blue><i>-- ^ HTML with CSS.</i></font>-<a name="line-8"></a> <font color=Red>|</font> ICSS <font color=Blue><i>-- ^ HTML with inline CSS.</i></font>-<a name="line-9"></a> <font color=Red>|</font> MIRC <font color=Blue><i>-- ^ mIRC chat clients</i></font>+<a name="line-3"></a><a name="Output"></a><font color=Blue>-- | The supported output formats.</font>+<a name="line-4"></a><a name="Output"></a><u><font color=Green>data</font></u> Output <font color=Red>=</font> TTY <font color=Blue>-- ^ ANSI terminal codes</font>+<a name="line-5"></a> <font color=Red>|</font> LaTeX <font color=Blue>-- ^ TeX macros</font>+<a name="line-6"></a> <font color=Red>|</font> HTML <font color=Blue>-- ^ HTML with font tags</font>+<a name="line-7"></a> <font color=Red>|</font> CSS <font color=Blue>-- ^ HTML with CSS.</font>+<a name="line-8"></a> <font color=Red>|</font> ICSS <font color=Blue>-- ^ HTML with inline CSS.</font>+<a name="line-9"></a> <font color=Red>|</font> MIRC <font color=Blue>-- ^ mIRC chat clients</font> <a name="line-10"></a> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font> </pre> </body>
docs/hscolour/Language/Haskell/HsColour/TTY.html view
@@ -5,17 +5,17 @@ <title>Language/Haskell/HsColour/TTY.hs</title> </head> <body>-<pre><a name="line-1"></a><font color=Blue><i>-- | Highlights Haskell code with ANSI terminal codes.</i></font>+<pre><a name="line-1"></a><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font> <a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u> <a name="line-3"></a> <a name="line-4"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI <u><font color=Green>as</font></u> ANSI <a name="line-5"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <a name="line-6"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise <a name="line-7"></a>-<a name="line-8"></a><a name="hscolour"></a><font color=Blue><i>-- | Highlights Haskell code with ANSI terminal codes.</i></font>-<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue><i>-- ^ Colour preferences.</i></font>-<a name="line-10"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Haskell source code.</i></font>-<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue><i>-- ^ Coloured Haskell source code.</i></font>+<a name="line-8"></a><a name="hscolour"></a><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>+<a name="line-9"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>+<a name="line-10"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font> <a name="line-12"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise <a name="line-13"></a> <a name="line-14"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String
docs/hscolour/doc-index-B.html view
@@ -145,14 +145,6 @@ ></TR ><TR ><TD CLASS="indexentry"->Bird</TD-><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-Options.html#v%3ABird"->Language.Haskell.HsColour.Options</A-></TD-></TR-><TR-><TD CLASS="indexentry" >Black</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ABlack"
docs/hscolour/doc-index-D.html view
@@ -153,6 +153,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>defaultColourPrefs</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-Colourise.html#v%3AdefaultColourPrefs"+>Language.Haskell.HsColour.Colourise</A+></TD+></TR+><TR+><TD CLASS="indexentry" >definition</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Adefinition"
docs/hscolour/doc-index-L.html view
@@ -163,14 +163,6 @@ ></TR ><TR ><TD CLASS="indexentry"->Literate</TD-><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-Options.html#t%3ALiterate"->Language.Haskell.HsColour.Options</A-></TD-></TR-><TR-><TD CLASS="indexentry" >layout</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Alayout"
docs/hscolour/doc-index-N.html view
@@ -135,14 +135,6 @@ ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR ><TD CLASS="indexentry"->NoLit</TD-><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-Options.html#v%3ANoLit"->Language.Haskell.HsColour.Options</A-></TD-></TR-><TR-><TD CLASS="indexentry" >Normal</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ANormal"
docs/hscolour/doc-index-T.html view
@@ -147,14 +147,6 @@ ></TR ><TR ><TD CLASS="indexentry"->TeX</TD-><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-Options.html#v%3ATeX"->Language.Haskell.HsColour.Options</A-></TD-></TR-><TR-><TD CLASS="indexentry" >TokenType</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-Classify.html#t%3ATokenType"
hscolour.cabal view
@@ -1,12 +1,12 @@ Name: hscolour-Version: 1.13+Version: 1.14 Copyright: 2003-2009 Malcolm Wallace, University of York; 2006 Bjorn Bringert Maintainer: Malcolm Wallace Author: Malcolm Wallace Homepage: http://www.cs.york.ac.uk/fp/darcs/hscolour/ License: GPL License-file: LICENCE-GPL-Build-depends: haskell98, base+Build-depends: haskell98, base < 10 Extensions: Synopsis: Colourise Haskell code. Description:
index.html view
@@ -36,10 +36,10 @@ <li> Download a tarfile package from: <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/"> ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/</a>- <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.13.tar.gz">- http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.13.tar.gz</a>- <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.13.zip">- http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.13.zip</a>+ <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.tar.gz">+ http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.tar.gz</a>+ <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.zip">+ http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.zip</a> <li> Or use the <a href="http://darcs.net/">darcs</a> repository at<br> <tt>darcs get http://www.cs.york.ac.uk/fp/darcs/hscolour</tt> <li> Sources and history are browsable on-line through@@ -53,11 +53,11 @@ <p> Just use one of the standard ways of building a Haskell program: <ul>+<li><tt>cabal install hscolour</tt> <li><tt>hmake HsColour</tt> <li><tt>ghc --make HsColour</tt> <li><tt>runhugs HsColour</tt> <li><tt>runhaskell Setup.hs configure/build/install</tt>-<li><tt>cabal install hscolour</tt> </ul> <h2>Use</h2>@@ -69,41 +69,44 @@ [ -tty | -html | -css | -icss | -latex | -mirc ] [ -lit | -lit-tex | -nolit ] [ -anchor | -noanchor | -partial | -nopartial ]- [file.hs]</pre>+ [file.hs]*</pre> </li></ul> <p> You can colourise a Haskell source file for either ANSI terminal codes-(option -tty), or HTML 3.2 with font tags (option -html), or HTML 4.01-output with CSS (option -css), or for XHTML 1.0 with inline CSS styling-(option -icss), or for LaTeX (option -latex), or for IRC (option -mirc).-The default is for terminal output.+(option <tt>-tty</tt>), or HTML 3.2 with font tags (option+<tt>-html</tt>), or HTML 4.01 output with CSS (option <tt>-css</tt>), or+for XHTML 1.0 with inline CSS styling (option <tt>-icss</tt>), or for+LaTeX (option <tt>-latex</tt>), or for IRC (option <tt>-mirc</tt>). The+default is for terminal output. <p> If no file argument is given, it reads standard input. Output is-written to file OUTPUT (option -o), defaulting to stdout.+written to file OUTPUT (option -o), defaulting to stdout. Multiple input+files will be concatenated to the same output. <p>-HsColour can add named anchors in HTML (option -anchor) to+HsColour can add named anchors in HTML (option <tt>-anchor</tt>) to top-level definitions in the source file (functions, datatypes, classes). This enables you to make links to a specific location in the generated file with the standard <tt>file.html#anchor</tt> notation (e.g. from <a href="http://haskell.org/haddock">haddock</a>-generated library documentation). <a href="#haddock">See below for details.</a> <p>-If you want to embed several individual colourised fragments into a-larger document, then use the <tt>-partial</tt> option with each+If an input file is literate, that is, it has a suffix ".lhs" or ".ly"+or ".lx", then only the code fragments will be colourised, leaving the+commentary untouched. You can explicitly override this+filename-guessing of literate status: use the <tt>-lit</tt> option to+force literate colouring, or <tt>-nolit</tt> to force all text to be+colourised. (<tt>-lit-tex</tt> is an obsolete synonym for <tt>-lit</tt>)+<p>+For more advanced usage, if you are building documents in parts, and+you want to embed several individual colourised fragments into a+larger document, use the <tt>-partial</tt> option with each fragment, to omit the HTML DOCTYPE header, CSS stylesheet link, or LaTeX prologue.-<p>-Alternatively, if you have a literate input source (e.g. .lhs file),-then the <tt>-lit</tt> option will pass the literate parts untouched,-and colourise only the code fragments (indicated by Bird-tracks - a >-in the left-most column), as if each was called individually with-<tt>-partial</tt>. A literate file containing LaTeX rather than-Bird-style should use <tt>-lit-tex</tt> instead. <h2>Configuration of colours</h2> <p>-If you use any of -html, -tty, -icss, -mirc, or -latex, you can configure the+If you use any output-format choice except <tt>-css</tt>, you can configure the colours for different lexical entities by editing a configuration file called <tt>.hscolour</tt> in the current directory. (An <a href=".hscolour">example</a> is included in the distribution.)@@ -197,6 +200,8 @@ <h2>History</h2> <p> <dl>+<dt>1.14</dt><dd> merges the -lit and -lit-tex options, adds -lit guessing,+ and permits multiple input files</dd> <dt>1.13</dt><dd> added the new -icss output format, and italic highlights</dd> <dt>1.12</dt><dd> changed the CSS class names to avoid clashes with other web tools</dd>@@ -219,7 +224,7 @@ </dl> <p>-This page last modified: 6th May 2009<br>+This page last modified: 21st August 2009<br> Malcolm Wallace<br> </td></tr></table>