packages feed

hscolour 1.9 → 1.10

raw patch · 40 files changed

+2263/−894 lines, 40 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Language.Haskell.HsColour: hscolour :: Output -> ColourPrefs -> Bool -> Bool -> Bool -> String -> String
+ Language.Haskell.HsColour: hscolour :: Output -> ColourPrefs -> Bool -> Bool -> Bool -> String -> String -> String
- Language.Haskell.HsColour.CSS: hscolour :: Bool -> Bool -> String -> String
+ Language.Haskell.HsColour.CSS: hscolour :: Bool -> Bool -> String -> String -> String
- Language.Haskell.HsColour.HTML: hscolour :: ColourPrefs -> Bool -> Bool -> String -> String
+ Language.Haskell.HsColour.HTML: hscolour :: ColourPrefs -> Bool -> Bool -> String -> String -> String

Files

HsColour.hs view
@@ -62,6 +62,7 @@       anchors   = useDefault False       id           [ b | Anchors b <- good ]       partial   = useDefault False       id           [ b | Partial b <- good ]       lhs       = useDefault False       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)@@ -73,7 +74,7 @@                   ++unwords (map show formats)))   when (length outFile > 1)        (errorOut ("Can only have one output file at a time."))-  ioWrapper (hscolour output pref anchors partial lhs)+  ioWrapper (hscolour output pref anchors partial lhs title)   hFlush stdout    where
Language/Haskell/HsColour.hs view
@@ -1,5 +1,5 @@--- | This is a library with colourises Haskell code. ---   It currently has four output formats: +-- | This is a library which colourises Haskell code.+--   It currently has five output formats: -- -- * ANSI terminal codes --@@ -31,31 +31,32 @@  -- | Colourise Haskell source code with the given output format. hscolour :: Output      -- ^ Output format.-         -> ColourPrefs -- ^ Colour preferences for formats that support it.+         -> ColourPrefs -- ^ Colour preferences (for formats that support them).          -> Bool        -- ^ Whether to include anchors.          -> Bool        -- ^ Whether output document is partial or complete.          -> Bool        -- ^ Whether input document is literate haskell or not+         -> String	-- ^ Title for output.          -> String      -- ^ Haskell source code.          -> String      -- ^ Coloured Haskell source code.-hscolour output pref anchor partial False = -    hscolour' output pref anchor partial-hscolour output pref anchor partial True = -    concatMap chunk . joinL . map lhsClassify . inlines+hscolour output pref anchor partial literate title+    | literate  = concatMap chunk . joinL . map lhsClassify . inlines+    | otherwise = hscolour' output pref anchor partial title   where     chunk (Literate c) = c-    chunk (Code c)     = hscolour' output pref anchor True c+    chunk (Code c)     = hscolour' output pref anchor True title c  hscolour' :: Output      -- ^ Output format.-          -> ColourPrefs -- ^ Colour preferences for formats that support it.+          -> 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.           -> String      -- ^ Haskell source code.           -> String      -- ^ Coloured Haskell source code.-hscolour' TTY   pref _      _       = TTY.hscolour pref-hscolour' MIRC  pref _      _       = MIRC.hscolour pref-hscolour' LaTeX pref _      partial = LaTeX.hscolour pref partial-hscolour' HTML  pref anchor partial = HTML.hscolour pref anchor partial-hscolour' CSS   _    anchor partial = CSS.hscolour anchor partial+hscolour' TTY   pref _      _       _   = TTY.hscolour pref+hscolour' MIRC  pref _      _       _   = MIRC.hscolour pref+hscolour' LaTeX pref _      partial _   = LaTeX.hscolour pref partial+hscolour' HTML  pref anchor partial top = HTML.hscolour pref anchor partial top+hscolour' CSS   _    anchor partial top = CSS.hscolour anchor partial top  -- | Separating literate files into code\/comment chunks. data Literate = Code {unL :: String} | Literate {unL :: String}
Language/Haskell/HsColour/ANSI.hs view
@@ -1,4 +1,4 @@--- Partially taken from Hugs AnsiScreen.hs library:+-- | Partially taken from Hugs AnsiScreen.hs library: module Language.Haskell.HsColour.ANSI   ( highlightOn   , highlightOff@@ -25,8 +25,10 @@ type Pos           = (Int,Int)  at        :: Pos -> String -> String+-- | Move the screen cursor to the given position. goto      :: Int -> Int -> String home      :: String+-- | Clear the screen. cls       :: String  at (x,y) s  = goto x y ++ s@@ -65,6 +67,7 @@   fromEnum (Foreground c) = 30 + fromEnum c   fromEnum (Background c) = 40 + fromEnum c +-- | Make the given string appear with all of the listed highlights highlight :: [Highlight] -> String -> String highlight attrs s = highlightOn attrs ++ s ++ highlightOff @@ -75,12 +78,12 @@ highlightOff = "\ESC[0m"  --- An infinite supply of colours.+-- | An infinite supply of colours. colourCycle :: [Colour] colourCycle = cycle [Red,Blue,Magenta,Green,Cyan]  --- Scrolling+-- | Scrolling enableScrollRegion :: Int -> Int -> String enableScrollRegion start end = "\ESC["++show start++';':show end++"r" 
Language/Haskell/HsColour/CSS.hs view
@@ -10,11 +10,12 @@ hscolour :: Bool   -- ^ Whether to include anchors.          -> Bool   -- ^ Whether output should be partial                    --   (= no stylesheet link will be included.)+         -> String -- ^ Title for HTML page.          -> String -- ^ Haskell source code.          -> String -- ^ An HTML document containing the coloured                     --   Haskell source code.-hscolour anchor partial =-  (if partial then id else top'n'tail)+hscolour anchor partial title =+  (if partial then id else top'n'tail title)   . pre   . (if anchor          then renderNewLinesAnchors@@ -23,8 +24,8 @@         else concatMap renderToken)   . tokenise -top'n'tail :: String -> String-top'n'tail  = (cssPrefix++) . (++cssSuffix)+top'n'tail :: String -> String -> String+top'n'tail title  = (cssPrefix title ++) . (++cssSuffix)  pre :: String -> String pre = ("<pre>"++) . (++"</pre>")@@ -55,12 +56,12 @@ cssClass _        = ""  -cssPrefix = unlines+cssPrefix title = unlines     ["<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"     ,"<html>"     ,"<head>"     ,"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"-    ,"<title>Haskell Code by HsColour</title>"+    ,"<title>"++title++"</title>"     ,"<link type='text/css' rel='stylesheet' href='hscolour.css' />"     ,"</head>"     ,"<body>"
Language/Haskell/HsColour/Classify.hs view
@@ -6,8 +6,8 @@ import Char import List --- Lex Haskell source code into an annotated token stream, without--- discarding any characters or layout.+-- | Lex Haskell source code into an annotated token stream, without+--   discarding any characters or layout. tokenise :: String -> [(TokenType,String)] tokenise str =      let chunks = glue . chunk $ str @@ -71,7 +71,7 @@ eolcomment (c:s)      = (c:cs, s') where (cs,s') = eolcomment s eolcomment []         = ([],[]) --- Classify tokens+-- | Classification of tokens as lexical entities data TokenType =   Space | Keyword | Keyglyph | Layout | Comment | Conid | Varid |   Conop | Varop   | String   | Char   | Number  | Cpp   | Error |
Language/Haskell/HsColour/ColourHighlight.hs view
@@ -3,9 +3,11 @@   , Highlight(..)   ) where +-- | Colours supported by ANSI codes. data Colour = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White   deriving (Eq,Show,Read,Enum) +-- | Types of highlighting supported by ANSI codes. data Highlight =     Normal   | Bold
Language/Haskell/HsColour/Colourise.hs view
@@ -47,6 +47,8 @@                                   ++": reverting to defaults")                 return defaultColourPrefs +-- | Read colour preferences from .hscolour file in the current directory, or failing that,+--   from \$HOME\/.hscolour, and failing that, returns a default set of prefs. readColourPrefs :: IO ColourPrefs readColourPrefs = catch   (do val <- readFile ".hscolour"@@ -57,7 +59,7 @@         parseColourPrefs (home++"/.hscolour") val)     (\_-> return defaultColourPrefs)) --- Convert classification to colour highlights.+-- | Convert token classification to colour highlights. colourise :: ColourPrefs -> TokenType -> [Highlight] colourise pref Space    = [Normal] colourise pref Comment  = comment pref
Language/Haskell/HsColour/HTML.hs view
@@ -15,10 +15,11 @@ hscolour :: ColourPrefs -- ^ Colour preferences.          -> Bool        -- ^ Whether to include anchors.          -> Bool        -- ^ Whether output should be partial.+         -> String      -- ^ Title for webpage output.          -> String      -- ^ Haskell source code.          -> String      -- ^ Coloured Haskell source code.-hscolour pref anchor partial = -    (if partial then id else top'n'tail)+hscolour pref anchor partial title = +    (if partial then id else top'n'tail title)     . pre     . (if anchor then renderNewLinesAnchors                       . concatMap (renderAnchors (renderToken pref))@@ -26,8 +27,8 @@                  else concatMap (renderToken pref))     . tokenise -top'n'tail :: String -> String-top'n'tail = (htmlHeader++) . (++htmlClose)+top'n'tail :: String -> String -> String+top'n'tail title = (htmlHeader title ++) . (++htmlClose)  pre :: String -> String pre = ("<pre>"++) . (++"</pre>")@@ -79,6 +80,13 @@ escape (c:cs)   = c: escape cs escape []       = [] -htmlHeader = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"-             ++"\n<html>\n"-htmlClose  = "\n</html>"+htmlHeader title = unlines+  [ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"+  , "<html>"+  , "<head>"+  ,"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"+  , "<title>"++title++"</title>"+  , "</head>"+  , "<body>"+  ]+htmlClose  = "\n</body>\n</html>"
Language/Haskell/HsColour/MIRC.hs view
@@ -1,5 +1,5 @@ -- | Formats Haskell source code using mIRC codes.---   (see http://irssi.org/documentation/formats)+--   (see http:\/\/irssi.org\/documentation\/formats) module Language.Haskell.HsColour.MIRC (hscolour) where  import Language.Haskell.HsColour.Classify as Classify
Makefile view
@@ -1,5 +1,5 @@ LIBRARY	= hscolour-VERSION	= 1.9+VERSION	= 1.10  DIRS	= Language/Haskell/HsColour 
docs/hscolour/Language-Haskell-HsColour-ANSI.html view
@@ -63,14 +63,241 @@ ></TD ></TR ><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>Partially taken from Hugs AnsiScreen.hs library:+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR ><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR ><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3Ahighlight"+>highlight</A+> :: [<A HREF="Language-Haskell-HsColour-ANSI.html#t%3AHighlight"+>Highlight</A+>] -&gt; String -&gt; String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Acls"+>cls</A+> :: String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Agoto"+>goto</A+> :: Int -&gt; Int -&gt; String</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%3AHighlight"+>Highlight</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ANormal"+>Normal</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABold"+>Bold</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADim"+>Dim</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AUnderscore"+>Underscore</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABlink"+>Blink</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AReverseVideo"+>ReverseVideo</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AConcealed"+>Concealed</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AForeground"+>Foreground</A+> <A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"+>Colour</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABackground"+>Background</A+> <A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"+>Colour</A+></TD+></TR+></TABLE+></TD+></TR+></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%3AColour"+>Colour</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ABlack"+>Black</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ARed"+>Red</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AGreen"+>Green</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AYellow"+>Yellow</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABlue"+>Blue</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AMagenta"+>Magenta</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACyan"+>Cyan</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AWhite"+>White</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AcolourCycle"+>colourCycle</A+> :: [<A HREF="Language-Haskell-HsColour-ANSI.html#t%3AColour"+>Colour</A+>]</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3AenableScrollRegion"+>enableScrollRegion</A+> :: Int -&gt; Int -&gt; String</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR ><TD CLASS="section1" >Documentation</TD ></TR@@ -99,6 +326,11 @@ ></TD ></TR ><TR+><TD CLASS="doc"+>Make the given string appear with all of the listed highlights+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -121,6 +353,11 @@ ></TD ></TR ><TR+><TD CLASS="doc"+>Clear the screen.+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -143,6 +380,11 @@ ></TD ></TR ><TR+><TD CLASS="doc"+>Move the screen cursor to the given position.+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -170,6 +412,11 @@ ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR+><TD CLASS="ndoc"+>Types of highlighting supported by ANSI codes.+</TD+></TR+><TR ><TD CLASS="section4" >Constructors</TD ></TR@@ -341,6 +588,11 @@ ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR+><TD CLASS="ndoc"+>Colours supported by ANSI codes.+</TD+></TR+><TR ><TD CLASS="section4" >Constructors</TD ></TR@@ -495,6 +747,11 @@ ></TD ></TR ><TR+><TD CLASS="doc"+>An infinite supply of colours.+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -515,6 +772,11 @@ ></TR ></TABLE ></TD+></TR+><TR+><TD CLASS="doc"+>Scrolling+</TD ></TR ><TR ><TD CLASS="s15"
docs/hscolour/Language-Haskell-HsColour-CSS.html view
@@ -90,17 +90,7 @@ ><TD CLASS="decl" ><A HREF="#v%3Ahscolour" >hscolour</A-> :: Bool -&gt; String -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhscolourFragment"->hscolourFragment</A-> :: Bool -&gt; String -&gt; String</TD+> :: Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD ></TR ></TABLE ></TD@@ -142,62 +132,22 @@ ><TD CLASS="arg" >:: Bool</TD ><TD CLASS="rdoc"->Whether to include anchors+>Whether to include anchors. </TD ></TR ><TR ><TD CLASS="arg"->-&gt; String</TD+>-&gt; Bool</TD ><TD CLASS="rdoc"->Haskell source code.+>Whether output should be partial+   (= no stylesheet link will be included.) </TD ></TR ><TR ><TD CLASS="arg" >-&gt; String</TD ><TD CLASS="rdoc"->An HTML document containing the coloured -   Haskell source code.-</TD-></TR-><TR-><TD CLASS="ndoc" COLSPAN="2"->Formats Haskell source code as a complete HTML document with CSS.-</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhscolourFragment"-></A-><B->hscolourFragment</B-></TD-><TD CLASS="declbut"-><A HREF="Language/Haskell/HsColour/CSS.html#hscolourFragment"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="arg"->:: Bool</TD-><TD CLASS="rdoc"->Whether to include anchors+>Title for HTML page. </TD ></TR ><TR@@ -211,14 +161,13 @@ ><TD CLASS="arg" >-&gt; String</TD ><TD CLASS="rdoc"->An HTML fragment containing the coloured +>An HTML document containing the coloured     Haskell source code. </TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2"->Formats Haskell source code as an HTML fragment with CSS.-   No stylesheet link is included in the output.+>Formats Haskell source code as a complete HTML document with CSS. </TD ></TR ></TABLE
docs/hscolour/Language-Haskell-HsColour-Classify.html view
@@ -67,10 +67,146 @@ ></TD ></TR ><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR ><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3ATokenType"+>TokenType</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ASpace"+>Space</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AKeyword"+>Keyword</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AKeyglyph"+>Keyglyph</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ALayout"+>Layout</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AComment"+>Comment</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AConid"+>Conid</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AVarid"+>Varid</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AConop"+>Conop</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AVarop"+>Varop</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AString"+>String</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AChar"+>Char</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ANumber"+>Number</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACpp"+>Cpp</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AError"+>Error</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADefinition"+>Definition</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atokenise"+>tokenise</A+> :: String -&gt; [(<A HREF="Language-Haskell-HsColour-Classify.html#t%3ATokenType"+>TokenType</A+>, String)]</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR ><TD CLASS="section1" >Documentation</TD ></TR@@ -102,6 +238,11 @@ ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR+><TD CLASS="ndoc"+>Classification of tokens as lexical entities+</TD+></TR+><TR ><TD CLASS="section4" >Constructors</TD ></TR@@ -230,6 +371,16 @@ ></TR ><TR ><TD CLASS="arg"+><A NAME="v%3ACpp"+></A+><B+>Cpp</B+></TD+><TD CLASS="rdoc"+></TD+></TR+><TR+><TD CLASS="arg" ><A NAME="v%3AError" ></A ><B@@ -238,6 +389,16 @@ ><TD CLASS="rdoc" ></TD ></TR+><TR+><TD CLASS="arg"+><A NAME="v%3ADefinition"+></A+><B+>Definition</B+></TD+><TD CLASS="rdoc"+></TD+></TR ></TABLE ></TD ></TR@@ -292,6 +453,12 @@ ></TR ></TABLE ></TD+></TR+><TR+><TD CLASS="doc"+>Lex Haskell source code into an annotated token stream, without+   discarding any characters or layout.+</TD ></TR ><TR ><TD CLASS="s15"
docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html view
@@ -67,10 +67,174 @@ ></TD ></TR ><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR ><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><SPAN CLASS="keyword"+>data</SPAN+> <A HREF="#t%3AColour"+>Colour</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ABlack"+>Black</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ARed"+>Red</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AGreen"+>Green</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AYellow"+>Yellow</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABlue"+>Blue</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AMagenta"+>Magenta</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ACyan"+>Cyan</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AWhite"+>White</A+></TD+></TR+></TABLE+></TD+></TR+></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%3AHighlight"+>Highlight</A+> </TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+>= <A HREF="#v%3ANormal"+>Normal</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABold"+>Bold</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ADim"+>Dim</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AUnderscore"+>Underscore</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABlink"+>Blink</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AReverseVideo"+>ReverseVideo</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AConcealed"+>Concealed</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AForeground"+>Foreground</A+> <A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AColour"+>Colour</A+></TD+></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3ABackground"+>Background</A+> <A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AColour"+>Colour</A+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR ><TD CLASS="section1" >Documentation</TD ></TR@@ -102,6 +266,11 @@ ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR+><TD CLASS="ndoc"+>Colours supported by ANSI codes.+</TD+></TR+><TR ><TD CLASS="section4" >Constructors</TD ></TR@@ -258,6 +427,11 @@ ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="ndoc"+>Types of highlighting supported by ANSI codes.+</TD+></TR ><TR ><TD CLASS="section4" >Constructors</TD
docs/hscolour/Language-Haskell-HsColour-Colourise.html view
@@ -120,10 +120,14 @@ >char</A >, <A HREF="#v%3Anumber" >number</A+>, <A HREF="#v%3Acpp"+>cpp</A >, <A HREF="#v%3Aselection" >selection</A >, <A HREF="#v%3Avariantselection" >variantselection</A+>, <A HREF="#v%3Adefinition"+>definition</A > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight" >Highlight</A >]</TD@@ -278,6 +282,10 @@ ></A ><B >number</B+>, <A NAME="v%3Acpp"+></A+><B+>cpp</B >, <A NAME="v%3Aselection" ></A ><B@@ -286,6 +294,10 @@ ></A ><B >variantselection</B+>, <A NAME="v%3Adefinition"+></A+><B+>definition</B > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight" >Highlight</A >]</TD@@ -357,6 +369,12 @@ ></TD ></TR ><TR+><TD CLASS="doc"+>Read colour preferences from .hscolour file in the current directory, or failing that,+   from $HOME/.hscolour, and failing that, returns a default set of prefs.+</TD+></TR+><TR ><TD CLASS="s15" ></TD ></TR@@ -383,6 +401,11 @@ ></TR ></TABLE ></TD+></TR+><TR+><TD CLASS="doc"+>Convert token classification to colour highlights.+</TD ></TR ><TR ><TD CLASS="s15"
+ docs/hscolour/Language-Haskell-HsColour-General.html view
@@ -0,0 +1,134 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Language.Haskell.HsColour.General</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>hscolour</TD+><TD CLASS="topbut"+><A HREF="Language/Haskell/HsColour/General.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Language.Haskell.HsColour.General</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdropLast"+></A+><B+>dropLast</B+> :: Eq a =&gt; a -&gt; [a] -&gt; [a]</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/General.html#dropLast"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3AdropFirst"+></A+><B+>dropFirst</B+> :: Eq a =&gt; a -&gt; [a] -&gt; [a]</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/General.html#dropFirst"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="botbar"+>Produced by <A HREF="http://www.haskell.org/haddock/"+>Haddock</A+> version 0.8</TD+></TR+></TABLE+></BODY+></HTML+>
docs/hscolour/Language-Haskell-HsColour-HTML.html view
@@ -109,7 +109,7 @@ >hscolour</A > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs" >ColourPrefs</A-> -&gt; Bool -&gt; String -&gt; String</TD+> -&gt; Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD ></TR ><TR ><TD CLASS="s8"@@ -135,6 +135,16 @@ >renderComment</A > :: String -&gt; String</TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArenderNewLinesAnchors"+>renderNewLinesAnchors</A+> :: String -&gt; String</TD+></TR ></TABLE ></TD ></TR@@ -184,13 +194,27 @@ ><TD CLASS="arg" >-&gt; Bool</TD ><TD CLASS="rdoc"->Whether to include anchors+>Whether to include anchors. </TD ></TR ><TR ><TD CLASS="arg"+>-&gt; Bool</TD+><TD CLASS="rdoc"+>Whether output should be partial.+</TD+></TR+><TR+><TD CLASS="arg" >-&gt; String</TD ><TD CLASS="rdoc"+>Title for webpage output.+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; String</TD+><TD CLASS="rdoc" >Haskell source code. </TD ></TR@@ -262,6 +286,28 @@ > :: String -&gt; String</TD ><TD CLASS="declbut" ><A HREF="Language/Haskell/HsColour/HTML.html#renderComment"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3ArenderNewLinesAnchors"+></A+><B+>renderNewLinesAnchors</B+> :: String -&gt; String</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/HTML.html#renderNewLinesAnchors" >Source</A ></TD ></TR
docs/hscolour/Language-Haskell-HsColour-LaTeX.html view
@@ -92,19 +92,7 @@ >hscolour</A > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs" >ColourPrefs</A-> -&gt; String -&gt; String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhscolourFragment"->hscolourFragment</A-> :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"->ColourPrefs</A-> -&gt; String -&gt; String</TD+> -&gt; Bool -&gt; String -&gt; String</TD ></TR ></TABLE ></TD@@ -153,59 +141,9 @@ ></TR ><TR ><TD CLASS="arg"->-&gt; String</TD-><TD CLASS="rdoc"->Haskell source code.-</TD-></TR-><TR-><TD CLASS="arg"->-&gt; String</TD-><TD CLASS="rdoc"->An LaTeX document containing the coloured -   Haskell source code.-</TD-></TR-><TR-><TD CLASS="ndoc" COLSPAN="2"->Formats Haskell source code as a complete LaTeX document.-</TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="s15"-></TD-></TR-><TR-><TD CLASS="topdecl"-><TABLE CLASS="declbar"-><TR-><TD CLASS="declname"-><A NAME="v%3AhscolourFragment"-></A-><B->hscolourFragment</B-></TD-><TD CLASS="declbut"-><A HREF="Language/Haskell/HsColour/LaTeX.html#hscolourFragment"->Source</A-></TD-></TR-></TABLE-></TD-></TR-><TR-><TD CLASS="body"-><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"-><TR-><TD CLASS="arg"->:: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"->ColourPrefs</A-></TD+>-&gt; Bool</TD ><TD CLASS="rdoc"->Colour preferences.+>Whether output should be partial (= no prologue). </TD ></TR ><TR@@ -219,13 +157,13 @@ ><TD CLASS="arg" >-&gt; String</TD ><TD CLASS="rdoc"->An LaTeX fragment containing the coloured +>A LaTeX document/fragment containing the coloured     Haskell source code. </TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2"->Formats Haskell source code as an LaTeX fragment.+>Formats Haskell source code as a complete LaTeX document. </TD ></TR ></TABLE
+ docs/hscolour/Language-Haskell-HsColour-MIRC.html view
@@ -0,0 +1,178 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">+<!--Rendered using the Haskell Html Library v0.2-->+<HTML+><HEAD+><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"+><TITLE+>Language.Haskell.HsColour.MIRC</TITLE+><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"+><SCRIPT SRC="haddock.js" TYPE="text/javascript"+></SCRIPT+></HEAD+><BODY+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="topbar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "+></TD+><TD CLASS="title"+>hscolour</TD+><TD CLASS="topbut"+><A HREF="Language/Haskell/HsColour/MIRC.html"+>Source code</A+></TD+><TD CLASS="topbut"+><A HREF="index.html"+>Contents</A+></TD+><TD CLASS="topbut"+><A HREF="doc-index.html"+>Index</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="modulebar"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD+><FONT SIZE="6"+>Language.Haskell.HsColour.MIRC</FONT+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Description</TD+></TR+><TR+><TD CLASS="doc"+>Formats Haskell source code using mIRC codes.+   (see http://irssi.org/documentation/formats)+</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Synopsis</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="decl"+><A HREF="#v%3Ahscolour"+>hscolour</A+> :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"+>ColourPrefs</A+> -&gt; String -&gt; String</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="section1"+>Documentation</TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="topdecl"+><TABLE CLASS="declbar"+><TR+><TD CLASS="declname"+><A NAME="v%3Ahscolour"+></A+><B+>hscolour</B+></TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/MIRC.html#hscolour"+>Source</A+></TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="body"+><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"+><TR+><TD CLASS="arg"+>:: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs"+>ColourPrefs</A+></TD+><TD CLASS="rdoc"+>Colour preferences.+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; String</TD+><TD CLASS="rdoc"+>Haskell source code.+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; String</TD+><TD CLASS="rdoc"+>Coloured Haskell source code.+</TD+></TR+><TR+><TD CLASS="ndoc" COLSPAN="2"+>Formats Haskell source code using mIRC codes.+</TD+></TR+></TABLE+></TD+></TR+><TR+><TD CLASS="s15"+></TD+></TR+><TR+><TD CLASS="botbar"+>Produced by <A HREF="http://www.haskell.org/haddock/"+>Haddock</A+> version 0.8</TD+></TR+></TABLE+></BODY+></HTML+>
docs/hscolour/Language-Haskell-HsColour.html view
@@ -69,8 +69,8 @@ ><TR ><TD CLASS="doc" ><P->This is a library with colourises Haskell code. -   It currently has three output formats: +>This is a library which colourises Haskell code.+   It currently has five output formats: </P ><UL ><LI@@ -85,6 +85,9 @@ ><LI > HTML with CSS. </LI+><LI+> mIRC chat client colour codes.+</LI ></UL ></TD ></TR@@ -141,6 +144,12 @@ >CSS</A ></TD ></TR+><TR+><TD CLASS="decl"+>| <A HREF="#v%3AMIRC"+>MIRC</A+></TD+></TR ></TABLE ></TD ></TR@@ -184,10 +193,14 @@ >char</A >, <A HREF="#v%3Anumber" >number</A+>, <A HREF="#v%3Acpp"+>cpp</A >, <A HREF="#v%3Aselection" >selection</A >, <A HREF="#v%3Avariantselection" >variantselection</A+>, <A HREF="#v%3Adefinition"+>definition</A > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight" >Highlight</A >]</TD@@ -207,7 +220,7 @@ >Output</A > -&gt; <A HREF="Language-Haskell-HsColour.html#t%3AColourPrefs" >ColourPrefs</A-> -&gt; Bool -&gt; String -&gt; String</TD+> -&gt; Bool -&gt; Bool -&gt; Bool -&gt; String -&gt; String -&gt; String</TD ></TR ></TABLE ></TD@@ -303,12 +316,48 @@ >HTML with CSS. </TD ></TR+><TR+><TD CLASS="arg"+><A NAME="v%3AMIRC"+></A+><B+>MIRC</B+></TD+><TD CLASS="rdoc"+>mIRC chat clients+</TD+></TR ></TABLE ></TD ></TR+><TR+><TD CLASS="section4"+><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Output')" ALT="show/hide"+> Instances</TD+></TR+><TR+><TD CLASS="body"+><DIV ID="i:Output" STYLE="display:block;"+><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"+><TR+><TD CLASS="decl"+>Eq <A HREF="Language-Haskell-HsColour.html#t%3AOutput"+>Output</A+></TD+></TR+><TR+><TD CLASS="decl"+>Show <A HREF="Language-Haskell-HsColour.html#t%3AOutput"+>Output</A+></TD+></TR ></TABLE+></DIV ></TD ></TR+></TABLE+></TD+></TR ><TR ><TD CLASS="s15" ></TD@@ -407,6 +456,10 @@ ></A ><B >number</B+>, <A NAME="v%3Acpp"+></A+><B+>cpp</B >, <A NAME="v%3Aselection" ></A ><B@@ -415,6 +468,10 @@ ></A ><B >variantselection</B+>, <A NAME="v%3Adefinition"+></A+><B+>definition</B > :: [<A HREF="Language-Haskell-HsColour-ColourHighlight.html#t%3AHighlight" >Highlight</A >]</TD@@ -501,7 +558,7 @@ >ColourPrefs</A ></TD ><TD CLASS="rdoc"->Colour preferences for formats that support it.+>Colour preferences (for formats that support them). </TD ></TR ><TR@@ -513,8 +570,29 @@ ></TR ><TR ><TD CLASS="arg"+>-&gt; Bool</TD+><TD CLASS="rdoc"+>Whether output document is partial or complete.+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; Bool</TD+><TD CLASS="rdoc"+>Whether input document is literate haskell or not+</TD+></TR+><TR+><TD CLASS="arg" >-&gt; String</TD ><TD CLASS="rdoc"+>Title for output.+</TD+></TR+><TR+><TD CLASS="arg"+>-&gt; String</TD+><TD CLASS="rdoc" >Haskell source code. </TD ></TR@@ -527,7 +605,7 @@ ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2"->Colourise Haskell source code with the give output format.+>Colourise Haskell source code with the given output format. </TD ></TR ></TABLE
docs/hscolour/Language/Haskell/HsColour.html view
@@ -1,37 +1,97 @@-<pre><font color=Blue>-- | This is a library with colourises Haskell code. </font>-<font color=Blue>--   It currently has three output formats: </font>-<font color=Blue>--</font>-<font color=Blue>-- * ANSI terminal codes</font>-<font color=Blue>--</font>-<font color=Blue>-- * LaTeX macros</font>-<font color=Blue>--</font>-<font color=Blue>-- * HTML with font tags</font>-<font color=Blue>--</font>-<font color=Blue>-- * HTML with CSS.</font>-<font color=Blue>--</font>-<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>-                                  hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>--<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>-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>TTY  <u><font color=Green>as</font></u> TTY-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML <u><font color=Green>as</font></u> HTML-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>CSS  <u><font color=Green>as</font></u> CSS-<u><font color=Green>import</font></u> qualified Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>LaTeX  <u><font color=Green>as</font></u> LaTeX--<font color=Blue>-- | The supported output formats.</font>-<a name="Output"></a><u><font color=Green>data</font></u> Output <font color=Red>=</font> TTY   <font color=Blue>-- ^ ANSI terminal codes</font>-            <font color=Red>|</font> LaTeX <font color=Blue>-- ^ TeX macros</font>-            <font color=Red>|</font> HTML  <font color=Blue>-- ^ HTML with font tags</font>-            <font color=Red>|</font> CSS   <font color=Blue>-- ^ HTML with CSS.</font>--<font color=Blue>-- | Colourise Haskell source code with the give output format.</font>-hscolour <font color=Red>::</font> Output      <font color=Blue>-- ^ Output format.</font>-         <font color=Red>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences for formats that support it.</font>-         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>-<a name="hscolour"></a>hscolour TTY   pref <u><font color=Green>_</font></u>      <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref-hscolour LaTeX pref <u><font color=Green>_</font></u>      <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref-hscolour HTML  pref anchor <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anchor-hscolour CSS   <u><font color=Green>_</font></u>    anchor <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anchor+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour.hs</title>+</head>+<body>+<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 five 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 with font tags</font>+<a name="line-9"></a><font color=Blue>--</font>+<a name="line-10"></a><font color=Blue>-- * HTML with CSS.</font>+<a name="line-11"></a><font color=Blue>--</font>+<a name="line-12"></a><font color=Blue>-- * mIRC chat client colour codes.</font>+<a name="line-13"></a><font color=Blue>--</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>LaTeX <u><font color=Green>as</font></u> LaTeX+<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>MIRC  <u><font color=Green>as</font></u> MIRC+<a name="line-23"></a>+<a name="line-24"></a><a name="Output"></a><font color=Blue>-- | The supported output formats.</font>+<a name="line-25"></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-26"></a>            <font color=Red>|</font> LaTeX <font color=Blue>-- ^ TeX macros</font>+<a name="line-27"></a>            <font color=Red>|</font> HTML  <font color=Blue>-- ^ HTML with font tags</font>+<a name="line-28"></a>            <font color=Red>|</font> CSS   <font color=Blue>-- ^ HTML with CSS.</font>+<a name="line-29"></a>            <font color=Red>|</font> MIRC  <font color=Blue>-- ^ mIRC chat clients</font>+<a name="line-30"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="line-31"></a>+<a name="line-32"></a><a name="hscolour"></a><font color=Blue>-- | Colourise Haskell source code with the given output format.</font>+<a name="line-33"></a>hscolour <font color=Red>::</font> Output      <font color=Blue>-- ^ Output format.</font>+<a name="line-34"></a>         <font color=Red>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>+<a name="line-35"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-36"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-37"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether input document is literate haskell or not</font>+<a name="line-38"></a>         <font color=Red>-&gt;</font> String	<font color=Blue>-- ^ Title for output.</font>+<a name="line-39"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-40"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-41"></a>hscolour output pref anchor partial literate title+<a name="line-42"></a>    <font color=Red>|</font> literate  <font color=Red>=</font> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> map lhsClassify <font color=Cyan>.</font> inlines+<a name="line-43"></a>    <font color=Red>|</font> otherwise <font color=Red>=</font> hscolour' output pref anchor partial title+<a name="line-44"></a>  <u><font color=Green>where</font></u>+<a name="line-45"></a>    chunk <font color=Cyan>(</font>Literate c<font color=Cyan>)</font> <font color=Red>=</font> c+<a name="line-46"></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-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>-&gt;</font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>+<a name="line-50"></a>          <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-51"></a>          <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-52"></a>          <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Title for output.</font>+<a name="line-53"></a>          <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-54"></a>          <font color=Red>-&gt;</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 anchor partial top <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anchor partial top+<a name="line-59"></a>hscolour' CSS   <u><font color=Green>_</font></u>    anchor partial top <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anchor partial top+<a name="line-60"></a>+<a name="line-61"></a><a name="Literate"></a><font color=Blue>-- | Separating literate files into code\/comment chunks.</font>+<a name="line-62"></a><a name="Literate"></a><u><font color=Green>data</font></u> Literate <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Literate <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font>+<a name="line-63"></a>+<a name="line-64"></a><a name="inlines"></a><font color=Blue>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</font>+<a name="line-65"></a><font color=Blue>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</font>+<a name="line-66"></a><font color=Blue>-- And retains the trailing '\n' character in each resultant string.</font>+<a name="line-67"></a>inlines <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="line-68"></a>inlines s <font color=Red>=</font> lines' s id+<a name="line-69"></a>  <u><font color=Green>where</font></u>+<a name="line-70"></a>  lines' []             acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>+<a name="line-71"></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-72"></a><font color=Blue>--lines' ('\^M':s)      acc = acc ['\n'] : lines' s id	-- MacOS</font>+<a name="line-73"></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-74"></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-75"></a>+<a name="line-76"></a><a name="lhsClassify"></a><font color=Blue>-- Note, I just pass the &gt; symbol to the colouriser, which assumes that</font>+<a name="line-77"></a><font color=Blue>-- it's token based and not parse-based!!!</font>+<a name="line-78"></a>lhsClassify <font color=Red>::</font> String <font color=Red>-&gt;</font> Literate+<a name="line-79"></a>lhsClassify <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>  <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>+<a name="line-80"></a>lhsClassify xs        <font color=Red>=</font> Literate xs+<a name="line-81"></a>+<a name="line-82"></a><a name="joinL"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Literate<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>Literate<font color=Red>]</font>+<a name="line-83"></a>joinL []                          <font color=Red>=</font> []+<a name="line-84"></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-85"></a>joinL <font color=Cyan>(</font>Literate c<b><font color=Red>:</font></b>Literate c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Literate <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-86"></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-87"></a> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/ANSI.html view
@@ -1,94 +1,106 @@-<pre><font color=Blue>-- Partially taken from Hugs AnsiScreen.hs library:</font>-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ANSI-  <font color=Cyan>(</font> highlightOn-  <font color=Cyan>,</font> highlightOff-  <font color=Cyan>,</font> highlight-  <font color=Cyan>,</font> cleareol<font color=Cyan>,</font> clearbol<font color=Cyan>,</font> clearline<font color=Cyan>,</font> clearDown<font color=Cyan>,</font> clearUp<font color=Cyan>,</font> cls-  <font color=Cyan>,</font> goto-  <font color=Cyan>,</font> cursorUp<font color=Cyan>,</font> cursorDown<font color=Cyan>,</font> cursorLeft<font color=Cyan>,</font> cursorRight-  <font color=Cyan>,</font> savePosition<font color=Cyan>,</font> restorePosition-  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-  <font color=Cyan>,</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-  <font color=Cyan>,</font> colourCycle-  <font color=Cyan>,</font> enableScrollRegion<font color=Cyan>,</font> scrollUp<font color=Cyan>,</font> scrollDown-  <font color=Cyan>,</font> lineWrap-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>--<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight--<u><font color=Green>import</font></u> List <font color=Cyan>(</font>intersperse<font color=Cyan>,</font>isPrefixOf<font color=Cyan>)</font>-<u><font color=Green>import</font></u> Char <font color=Cyan>(</font>isDigit<font color=Cyan>)</font>---<font color=Blue>-- Basic screen control codes:</font>--<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>--at        <font color=Red>::</font> Pos <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String-goto      <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String-home      <font color=Red>::</font> String-cls       <font color=Red>::</font> String--<a name="at"></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-<a name="goto"></a>goto x y    <font color=Red>=</font> <font color=Magenta>'\ESC'</font><b><font color=Red>:</font></b><font color=Magenta>'['</font><b><font color=Red>:</font></b><font color=Cyan>(</font>show y <font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show x <font color=Cyan>++</font> <font color=Magenta>"H"</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="home"></a>home        <font color=Red>=</font> goto <font color=Magenta>1</font> <font color=Magenta>1</font>--<a name="cursorUp"></a>cursorUp    <font color=Red>=</font> <font color=Magenta>"\ESC[A"</font>-<a name="cursorDown"></a>cursorDown  <font color=Red>=</font> <font color=Magenta>"\ESC[B"</font>-<a name="cursorRight"></a>cursorRight <font color=Red>=</font> <font color=Magenta>"\ESC[C"</font>-<a name="cursorLeft"></a>cursorLeft  <font color=Red>=</font> <font color=Magenta>"\ESC[D"</font>--<a name="cleareol"></a>cleareol    <font color=Red>=</font> <font color=Magenta>"\ESC[K"</font>-<a name="clearbol"></a>clearbol    <font color=Red>=</font> <font color=Magenta>"\ESC[1K"</font>-<a name="clearline"></a>clearline   <font color=Red>=</font> <font color=Magenta>"\ESC[2K"</font>-<a name="clearDown"></a>clearDown   <font color=Red>=</font> <font color=Magenta>"\ESC[J"</font>-<a name="clearUp"></a>clearUp     <font color=Red>=</font> <font color=Magenta>"\ESC[1J"</font>-<font color=Blue>-- Choose whichever of the following lines is suitable for your system:</font>-<a name="cls"></a>cls         <font color=Red>=</font> <font color=Magenta>"\ESC[2J"</font>     <font color=Blue>-- for PC with ANSI.SYS</font>-<font color=Blue>--cls         = "\^L"         -- for Sun window</font>--<a name="savePosition"></a>savePosition    <font color=Red>=</font> <font color=Magenta>"\ESC7"</font>-<a name="restorePosition"></a>restorePosition <font color=Red>=</font> <font color=Magenta>"\ESC8"</font>---<font color=Blue>-- data Colour    -- imported from ColourHighlight</font>-<font color=Blue>-- data Highlight -- imported from ColourHighlight</font>--<u><font color=Green>instance</font></u> Enum Highlight <u><font color=Green>where</font></u>-  fromEnum Normal       <font color=Red>=</font> <font color=Magenta>0</font>-  fromEnum Bold         <font color=Red>=</font> <font color=Magenta>1</font>-  fromEnum Dim          <font color=Red>=</font> <font color=Magenta>2</font>-  fromEnum Underscore   <font color=Red>=</font> <font color=Magenta>4</font>-  fromEnum Blink        <font color=Red>=</font> <font color=Magenta>5</font>-  fromEnum ReverseVideo <font color=Red>=</font> <font color=Magenta>7</font>-  fromEnum Concealed    <font color=Red>=</font> <font color=Magenta>8</font>-  fromEnum <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>30</font> <font color=Cyan>+</font> fromEnum c-  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--highlight <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String-<a name="highlight"></a>highlight attrs s <font color=Red>=</font> highlightOn attrs <font color=Cyan>++</font> s <font color=Cyan>++</font> highlightOff--<a name="highlightOn"></a>highlightOn <font color=Red>[</font><font color=Red>]</font>     <font color=Red>=</font> highlightOn <font color=Red>[</font>Normal<font color=Red>]</font>-highlightOn attrs  <font color=Red>=</font> <font color=Magenta>"\ESC["</font>-                     <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>";"</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>show<font color=Cyan>.</font>fromEnum<font color=Cyan>)</font> attrs<font color=Cyan>)</font><font color=Cyan>)</font>-                     <font color=Cyan>++</font><font color=Magenta>"m"</font>-<a name="highlightOff"></a>highlightOff <font color=Red>=</font> <font color=Magenta>"\ESC[0m"</font>---<font color=Blue>-- An infinite supply of colours.</font>-colourCycle <font color=Red>::</font> <font color=Red>[</font>Colour<font color=Red>]</font>-<a name="colourCycle"></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>---<font color=Blue>-- Scrolling</font>-enableScrollRegion <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String-<a name="enableScrollRegion"></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="scrollDown"></a>scrollDown  <font color=Red>=</font> <font color=Magenta>"\ESCD"</font>-<a name="scrollUp"></a>scrollUp    <font color=Red>=</font> <font color=Magenta>"\ESCM"</font>--<font color=Blue>-- Line-wrapping mode</font>-<a name="lineWrap"></a>lineWrap True  <font color=Red>=</font> <font color=Magenta>"\ESC[7h"</font>-lineWrap False <font color=Red>=</font> <font color=Magenta>"\ESC[7l"</font>-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/ANSI.hs</title>+</head>+<body>+<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+<a name="line-5"></a>  <font color=Cyan>,</font> highlight+<a name="line-6"></a>  <font color=Cyan>,</font> cleareol<font color=Cyan>,</font> clearbol<font color=Cyan>,</font> clearline<font color=Cyan>,</font> clearDown<font color=Cyan>,</font> clearUp<font color=Cyan>,</font> cls+<a name="line-7"></a>  <font color=Cyan>,</font> goto+<a name="line-8"></a>  <font color=Cyan>,</font> cursorUp<font color=Cyan>,</font> cursorDown<font color=Cyan>,</font> cursorLeft<font color=Cyan>,</font> cursorRight+<a name="line-9"></a>  <font color=Cyan>,</font> savePosition<font color=Cyan>,</font> restorePosition+<a name="line-10"></a>  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-11"></a>  <font color=Cyan>,</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-12"></a>  <font color=Cyan>,</font> colourCycle+<a name="line-13"></a>  <font color=Cyan>,</font> enableScrollRegion<font color=Cyan>,</font> scrollUp<font color=Cyan>,</font> scrollDown+<a name="line-14"></a>  <font color=Cyan>,</font> lineWrap+<a name="line-15"></a>  <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>ColourHighlight+<a name="line-18"></a>+<a name="line-19"></a><u><font color=Green>import</font></u> List <font color=Cyan>(</font>intersperse<font color=Cyan>,</font>isPrefixOf<font color=Cyan>)</font>+<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>-- 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>-&gt;</font> String <font color=Red>-&gt;</font> String+<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>-&gt;</font> Int <font color=Red>-&gt;</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>-- | 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+<a name="line-35"></a>goto x y    <font color=Red>=</font> <font color=Magenta>'\ESC'</font><b><font color=Red>:</font></b><font color=Magenta>'['</font><b><font color=Red>:</font></b><font color=Cyan>(</font>show y <font color=Cyan>++</font><font color=Cyan>(</font><font color=Magenta>';'</font><b><font color=Red>:</font></b>show x <font color=Cyan>++</font> <font color=Magenta>"H"</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-36"></a>home        <font color=Red>=</font> goto <font color=Magenta>1</font> <font color=Magenta>1</font>+<a name="line-37"></a>+<a name="line-38"></a><a name="cursorUp"></a>cursorUp    <font color=Red>=</font> <font color=Magenta>"\ESC[A"</font>+<a name="line-39"></a><a name="cursorDown"></a>cursorDown  <font color=Red>=</font> <font color=Magenta>"\ESC[B"</font>+<a name="line-40"></a><a name="cursorRight"></a>cursorRight <font color=Red>=</font> <font color=Magenta>"\ESC[C"</font>+<a name="line-41"></a><a name="cursorLeft"></a>cursorLeft  <font color=Red>=</font> <font color=Magenta>"\ESC[D"</font>+<a name="line-42"></a>+<a name="line-43"></a><a name="cleareol"></a>cleareol    <font color=Red>=</font> <font color=Magenta>"\ESC[K"</font>+<a name="line-44"></a><a name="clearbol"></a>clearbol    <font color=Red>=</font> <font color=Magenta>"\ESC[1K"</font>+<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>-- 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>-- 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>+<a name="line-61"></a>  fromEnum Bold         <font color=Red>=</font> <font color=Magenta>1</font>+<a name="line-62"></a>  fromEnum Dim          <font color=Red>=</font> <font color=Magenta>2</font>+<a name="line-63"></a>  fromEnum Underscore   <font color=Red>=</font> <font color=Magenta>4</font>+<a name="line-64"></a>  fromEnum Blink        <font color=Red>=</font> <font color=Magenta>5</font>+<a name="line-65"></a>  fromEnum ReverseVideo <font color=Red>=</font> <font color=Magenta>7</font>+<a name="line-66"></a>  fromEnum Concealed    <font color=Red>=</font> <font color=Magenta>8</font>+<a name="line-67"></a>  fromEnum <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>30</font> <font color=Cyan>+</font> fromEnum c+<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>+<a name="line-70"></a><a name="highlight"></a><font color=Blue>-- | Make the given string appear with all of the listed highlights</font>+<a name="line-71"></a>highlight <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font> <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="line-72"></a>highlight attrs s <font color=Red>=</font> highlightOn attrs <font color=Cyan>++</font> s <font color=Cyan>++</font> highlightOff+<a name="line-73"></a>+<a name="line-74"></a><a name="highlightOn"></a>highlightOn []     <font color=Red>=</font> highlightOn <font color=Red>[</font>Normal<font color=Red>]</font>+<a name="line-75"></a>highlightOn attrs  <font color=Red>=</font> <font color=Magenta>"\ESC["</font>+<a name="line-76"></a>                     <font color=Cyan>++</font> concat <font color=Cyan>(</font>intersperse <font color=Magenta>";"</font> <font color=Cyan>(</font>map <font color=Cyan>(</font>show<font color=Cyan>.</font>fromEnum<font color=Cyan>)</font> attrs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-77"></a>                     <font color=Cyan>++</font><font color=Magenta>"m"</font>+<a name="line-78"></a><a name="highlightOff"></a>highlightOff <font color=Red>=</font> <font color=Magenta>"\ESC[0m"</font>+<a name="line-79"></a>+<a name="line-80"></a>+<a name="line-81"></a><a name="colourCycle"></a><font color=Blue>-- | An infinite supply of colours.</font>+<a name="line-82"></a>colourCycle <font color=Red>::</font> <font color=Red>[</font>Colour<font color=Red>]</font>+<a name="line-83"></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-84"></a>+<a name="line-85"></a>+<a name="line-86"></a><a name="enableScrollRegion"></a><font color=Blue>-- | Scrolling</font>+<a name="line-87"></a>enableScrollRegion <font color=Red>::</font> Int <font color=Red>-&gt;</font> Int <font color=Red>-&gt;</font> String+<a name="line-88"></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-89"></a>+<a name="line-90"></a><a name="scrollDown"></a>scrollDown  <font color=Red>=</font> <font color=Magenta>"\ESCD"</font>+<a name="line-91"></a><a name="scrollUp"></a>scrollUp    <font color=Red>=</font> <font color=Magenta>"\ESCM"</font>+<a name="line-92"></a>+<a name="line-93"></a><a name="lineWrap"></a><font color=Blue>-- Line-wrapping mode</font>+<a name="line-94"></a>lineWrap True  <font color=Red>=</font> <font color=Magenta>"\ESC[7h"</font>+<a name="line-95"></a>lineWrap False <font color=Red>=</font> <font color=Magenta>"\ESC[7l"</font>+<a name="line-96"></a> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/Anchors.html view
@@ -1,131 +1,143 @@-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors-  <font color=Cyan>(</font> insertAnchors-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>--<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>import</font></u> List--<font color=Blue>-- This is an attempt to find the first defining occurrence of an</font>-<font color=Blue>-- identifier (function, datatype, class) in a Haskell source file.</font>-<font color=Blue>-- Rather than parse the module properly, we try to get by with just</font>-<font color=Blue>-- a finite state automaton.  Keeping a record of identifiers we</font>-<font color=Blue>-- have already seen, we look at the beginning of every line to see</font>-<font color=Blue>-- if it starts with the right tokens to introduce a defn.  If so,</font>-<font color=Blue>-- we look a little bit further until we can be certain.  Then plonk</font>-<font color=Blue>-- (or not) an anchor at the beginning of the line.</font>--<a name="Anchor"></a><u><font color=Green>type</font></u> Anchor <font color=Red>=</font> String--<font color=Blue>-- | 'insertAnchors' places an anchor marker in the token stream before the</font>-<font color=Blue>--   first defining occurrence of any identifier.  Here, /before/ means</font>-<font color=Blue>--   immediately preceding its type signature, or preceding a (haddock)</font>-<font color=Blue>--   comment that comes immediately before the type signature, or failing</font>-<font color=Blue>--   either of those, before the first equation.</font>-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>-&gt;</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="insertAnchors"></a>insertAnchors <font color=Red>=</font> anchor emptyST--<font color=Blue>-- looks at first token in the left-most position of each line</font>-<font color=Blue>-- precondition: have just seen a newline token.</font>-<a name="anchor"></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>-                Nothing <font color=Red>-&gt;</font> emit st s-                Just v  <font color=Red>-&gt;</font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s--<font color=Blue>-- emit passes stuff through until the next newline has been encountered,</font>-<font color=Blue>-- then jumps back into the anchor function</font>-<font color=Blue>-- pre-condition: newlines are explicitly single tokens</font>-<a name="emit"></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-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-emit <u><font color=Green>_</font></u>  <font color=Red>[</font><font color=Red>]</font>                      <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>--<font color=Blue>-- Given that we are at the beginning of a line, determine whether there</font>-<font color=Blue>-- is an identifier defined here, and if so, return it.</font>-<font color=Blue>-- precondition: have just seen a newline token.</font>-<a name="identifier"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Varid<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font>-    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>-        <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>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>-        notVarop  <font color=Blue>--  | typesig stream  -&gt; Nothing    -- not a defn</font>-                      <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing    <font color=Blue>-- already defined</font>-                      <font color=Red>|</font> otherwise       <font color=Red>-&gt;</font> Just v-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>-    <u><font color=Green>case</font></u> stream <u><font color=Green>of</font></u>-      <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>-                  <font color=Blue>--  | typesig stream  -&gt; Nothing</font>-	              <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing-	              <font color=Red>|</font> otherwise	<font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>-      notVarop <font color=Red>-&gt;</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>-          <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>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>-          <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> Nothing-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>-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-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-identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"class"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font>   <font color=Red>=</font> getConid stream-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-identifier st stream <font color=Red>=</font> Nothing--<font color=Blue>-- Is this really a type signature?  (no longer used)</font>-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>-&gt;</font> Bool-<a name="typesig"></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-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-typesig <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><font color=Cyan>(</font>Varop<font color=Cyan>,</font><u><font color=Green>_</font></u><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>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream-typesig <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> typesig stream-typesig <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> typesig stream-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-typesig <u><font color=Green>_</font></u>                     <font color=Red>=</font> False--<font color=Blue>-- throw away everything from opening paren to matching close</font>-<a name="munchParens"></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>-  <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-        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-        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-        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-        munch <u><font color=Green>_</font></u> <font color=Red>[</font><font color=Red>]</font>                  <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>	<font color=Blue>-- source is ill-formed</font>--<font color=Blue>-- ensure anchor name is correct for a Varop</font>-<a name="fix"></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> init v-fix v       <font color=Red>=</font> v--<font color=Blue>-- look past whitespace and comments to next "real" token</font>-<a name="skip"></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-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-skip stream               <font color=Red>=</font> stream--<font color=Blue>-- skip possible context up to and including "=&gt;", returning next Conid token</font>-<font color=Blue>-- (this function is highly partial - relies on source being parse-correct)</font>-<a name="getConid"></a>getConid stream <font color=Red>=</font>-    <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>-        <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>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>-                              <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>-&gt;</font> Just c-                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>-                                  <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>-                                      <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'-                                      v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =&gt;"</font><font color=Cyan>)</font>-                              v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" no = or =&gt;"</font><font color=Cyan>)</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>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>-                                   <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>-                                       <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>-                                           <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c'<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'-                                           v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =&gt;"</font><font color=Cyan>)</font>-                                   v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =&gt;"</font><font color=Cyan>)</font>-        v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"no Conid or (...)"</font><font color=Cyan>)</font>-    <u><font color=Green>where</font></u> debug <font color=Cyan>(</font>s<b><font color=Red>:</font></b>t<font color=Cyan>)</font> c <font color=Red>=</font> Nothing-       <font color=Blue>-- debug (s:t) c = error ("HsColour: getConid failed: "++show s</font>-       <font color=Blue>--                       ++"\n  in the context of: "++c)</font>--<font color=Blue>-- jump past possible class context</font>-<a name="context"></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-context stream<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</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-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--<font color=Blue>-- simple implementation of a string lookup table.</font>-<font color=Blue>-- replace this with something more sophisticated if needed.</font>-<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>--emptyST <font color=Red>::</font> ST-<a name="emptyST"></a>emptyST <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>--insertST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> ST-<a name="insertST"></a>insertST k st <font color=Red>=</font> insert k st--inST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> Bool-<a name="inST"></a>inST k st <font color=Red>=</font> k <font color=Cyan>`elem`</font> st+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/Anchors.hs</title>+</head>+<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>Anchors+<a name="line-2"></a>  <font color=Cyan>(</font> insertAnchors+<a name="line-3"></a>  <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+<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>-- 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>-- | '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>-&gt;</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>-- 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>-&gt;</font> emit st s+<a name="line-32"></a>                Just v  <font color=Red>-&gt;</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>-- 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>-- 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>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>+<a name="line-47"></a>        notVarop  <font color=Blue>--  | typesig stream  -&gt; Nothing    -- not a defn</font>+<a name="line-48"></a>                      <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing    <font color=Blue>-- already defined</font>+<a name="line-49"></a>                      <font color=Red>|</font> otherwise       <font color=Red>-&gt;</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>--  | typesig stream  -&gt; Nothing</font>+<a name="line-54"></a>	              <font color=Red>|</font> v <font color=Cyan>`inST`</font> st     <font color=Red>-&gt;</font> Nothing+<a name="line-55"></a>	              <font color=Red>|</font> otherwise	<font color=Red>-&gt;</font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>+<a name="line-56"></a>      notVarop <font color=Red>-&gt;</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>-&gt;</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>-&gt;</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>-- 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+<a name="line-63"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"class"</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-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>-- 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>-&gt;</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+<a name="line-71"></a>typesig <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><font color=Cyan>(</font>Varop<font color=Cyan>,</font><u><font color=Green>_</font></u><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>stream<font color=Cyan>)</font>    <font color=Red>=</font> typesig stream+<a name="line-72"></a>typesig <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> typesig stream+<a name="line-73"></a>typesig <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> typesig stream+<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>-- 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>-</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>-- source is ill-formed</font>+<a name="line-84"></a>+<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>-- 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>-- skip possible context up to and including "=&gt;", 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>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>+<a name="line-99"></a>                              <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>-&gt;</font> Just c+<a name="line-100"></a>                              <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="line-101"></a>                                  <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>+<a name="line-102"></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><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'+<a name="line-103"></a>                                      v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =&gt;"</font><font color=Cyan>)</font>+<a name="line-104"></a>                              v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" no = or =&gt;"</font><font color=Cyan>)</font>+<a name="line-105"></a>        <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>-&gt;</font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>+<a name="line-106"></a>                                   <font color=Cyan>(</font><font color=Cyan>(</font>Keyglyph<font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-&gt;</font>+<a name="line-107"></a>                                       <u><font color=Green>case</font></u> skip more <u><font color=Green>of</font></u>+<a name="line-108"></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><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-&gt;</font> Just c'+<a name="line-109"></a>                                           v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =&gt;"</font><font color=Cyan>)</font>+<a name="line-110"></a>                                   v <font color=Red>-&gt;</font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =&gt;"</font><font color=Cyan>)</font>+<a name="line-111"></a>        v <font color=Red>-&gt;</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>-- 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>-- 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>"=&gt;"</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>-- 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+<a name="line-127"></a>emptyST <font color=Red>=</font> []+<a name="line-128"></a>+<a name="line-129"></a><a name="insertST"></a>insertST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> ST+<a name="line-130"></a>insertST k st <font color=Red>=</font> insert k st+<a name="line-131"></a>+<a name="line-132"></a><a name="inST"></a>inST <font color=Red>::</font> String <font color=Red>-&gt;</font> ST <font color=Red>-&gt;</font> Bool+<a name="line-133"></a>inST k st <font color=Red>=</font> k <font color=Cyan>`elem`</font> st </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/CSS.html view
@@ -1,66 +1,83 @@-<pre><font color=Blue>-- | Formats Haskell source code as HTML with CSS.</font>-<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> hscolourFragment<font color=Cyan>)</font> <u><font color=Green>where</font></u>--<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors-<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-<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> escape<font color=Cyan>)</font>--<font color=Blue>-- | Formats Haskell source code as a complete HTML document with CSS.</font>-hscolour <font color=Red>::</font> Bool   <font color=Blue>-- ^ Whether to include anchors</font>-         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>-         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>-                   <font color=Blue>--   Haskell source code.</font>-<a name="hscolour"></a>hscolour anchor <font color=Red>=</font> top'n'tail <font color=Cyan>.</font> hscolourFragment anchor--<font color=Blue>-- | Formats Haskell source code as an HTML fragment with CSS.</font>-<font color=Blue>--   No stylesheet link is included in the output.</font>-hscolourFragment <font color=Red>::</font> Bool   <font color=Blue>-- ^ Whether to include anchors</font>-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An HTML fragment containing the coloured </font>-                           <font color=Blue>--   Haskell source code.</font>-<a name="hscolourFragment"></a>hscolourFragment anchor <font color=Red>=</font> -    pre <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor -           <u><font color=Green>then</font></u> concatMap <font color=Cyan>(</font>renderAnchors renderToken<font color=Cyan>)</font> <font color=Cyan>.</font> insertAnchors-           <u><font color=Green>else</font></u> concatMap renderToken<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise--top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String-<a name="top'n'tail"></a>top'n'tail  <font color=Red>=</font> <font color=Cyan>(</font>cssPrefix<font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>cssSuffix<font color=Cyan>)</font>--pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String-<a name="pre"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>--renderToken <font color=Red>::</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String-<a name="renderToken"></a>renderToken <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> text-renderToken <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font>   <font color=Red>=</font> <font color=Magenta>"&lt;span class='"</font> <font color=Cyan>++</font> cssClass cls <font color=Cyan>++</font> <font color=Magenta>"'&gt;"</font> <font color=Cyan>++</font>-                           <font color=Cyan>(</font><u><font color=Green>if</font></u> cls <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment text <u><font color=Green>else</font></u> escape text<font color=Cyan>)</font> <font color=Cyan>++</font>-                           <font color=Magenta>"&lt;/span&gt;"</font>--<a name="cssClass"></a>cssClass Keyword  <font color=Red>=</font> <font color=Magenta>"keyword"</font>-cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"keyglyph"</font>-cssClass Layout   <font color=Red>=</font> <font color=Magenta>"layout"</font>-cssClass Comment  <font color=Red>=</font> <font color=Magenta>"comment"</font>-cssClass Conid    <font color=Red>=</font> <font color=Magenta>"conid"</font>-cssClass Varid    <font color=Red>=</font> <font color=Magenta>"varid"</font>-cssClass Conop    <font color=Red>=</font> <font color=Magenta>"conop"</font>-cssClass Varop    <font color=Red>=</font> <font color=Magenta>"varop"</font>-cssClass String   <font color=Red>=</font> <font color=Magenta>"str"</font>-cssClass Char     <font color=Red>=</font> <font color=Magenta>"chr"</font>-cssClass Number   <font color=Red>=</font> <font color=Magenta>"num"</font>-cssClass Error    <font color=Red>=</font> <font color=Magenta>"sel"</font>--<a name="cssPrefix"></a>cssPrefix <font color=Red>=</font> unlines-    <font color=Red>[</font><font color=Magenta>"&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;html&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;head&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;title&gt;Haskell Code by HsColour&lt;/title&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;link type='text/css' rel='stylesheet' href='hscolour.css' /&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;/head&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;body&gt;"</font>-    <font color=Red>]</font>-    -<a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines-    <font color=Red>[</font><font color=Magenta>"&lt;/body&gt;"</font>-    <font color=Cyan>,</font><font color=Magenta>"&lt;/html&gt;"</font>-    <font color=Red>]</font>+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/CSS.hs</title>+</head>+<body>+<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+<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+<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>-- | 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>-&gt;</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>-&gt;</font> String <font color=Blue>-- ^ Title for HTML page.</font>+<a name="line-14"></a>         <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-15"></a>         <font color=Red>-&gt;</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+<a name="line-20"></a>  <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor +<a name="line-21"></a>        <u><font color=Green>then</font></u> renderNewLinesAnchors+<a name="line-22"></a>             <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors renderToken<font color=Cyan>)</font>+<a name="line-23"></a>             <font color=Cyan>.</font> insertAnchors+<a name="line-24"></a>        <u><font color=Green>else</font></u> concatMap renderToken<font color=Cyan>)</font>+<a name="line-25"></a>  <font color=Cyan>.</font> tokenise+<a name="line-26"></a>+<a name="line-27"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="line-28"></a>top'n'tail title  <font color=Red>=</font> <font color=Cyan>(</font>cssPrefix title <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>cssSuffix<font color=Cyan>)</font>+<a name="line-29"></a>+<a name="line-30"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<a name="line-31"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>+<a name="line-32"></a>+<a name="line-33"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String+<a name="line-34"></a>renderToken <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-35"></a>        before <font color=Cyan>++</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> cls <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment text <u><font color=Green>else</font></u> escape text<font color=Cyan>)</font> <font color=Cyan>++</font> after+<a name="line-36"></a>    <u><font color=Green>where</font></u>+<a name="line-37"></a>        before <font color=Red>=</font> <u><font color=Green>if</font></u> null cls2 <u><font color=Green>then</font></u> <font color=Magenta>""</font> <u><font color=Green>else</font></u> <font color=Magenta>"&lt;span class='"</font> <font color=Cyan>++</font> cls2 <font color=Cyan>++</font> <font color=Magenta>"'&gt;"</font>+<a name="line-38"></a>        after  <font color=Red>=</font> <u><font color=Green>if</font></u> null cls2 <u><font color=Green>then</font></u> <font color=Magenta>""</font> <u><font color=Green>else</font></u> <font color=Magenta>"&lt;/span&gt;"</font>+<a name="line-39"></a>        cls2 <font color=Red>=</font> cssClass cls+<a name="line-40"></a>+<a name="line-41"></a>+<a name="line-42"></a><a name="cssClass"></a>cssClass Keyword  <font color=Red>=</font> <font color=Magenta>"keyword"</font>+<a name="line-43"></a>cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"keyglyph"</font>+<a name="line-44"></a>cssClass Layout   <font color=Red>=</font> <font color=Magenta>"layout"</font>+<a name="line-45"></a>cssClass Comment  <font color=Red>=</font> <font color=Magenta>"comment"</font>+<a name="line-46"></a>cssClass Conid    <font color=Red>=</font> <font color=Magenta>"conid"</font>+<a name="line-47"></a>cssClass Varid    <font color=Red>=</font> <font color=Magenta>"varid"</font>+<a name="line-48"></a>cssClass Conop    <font color=Red>=</font> <font color=Magenta>"conop"</font>+<a name="line-49"></a>cssClass Varop    <font color=Red>=</font> <font color=Magenta>"varop"</font>+<a name="line-50"></a>cssClass String   <font color=Red>=</font> <font color=Magenta>"str"</font>+<a name="line-51"></a>cssClass Char     <font color=Red>=</font> <font color=Magenta>"chr"</font>+<a name="line-52"></a>cssClass Number   <font color=Red>=</font> <font color=Magenta>"num"</font>+<a name="line-53"></a>cssClass Cpp      <font color=Red>=</font> <font color=Magenta>"cpp"</font>+<a name="line-54"></a>cssClass Error    <font color=Red>=</font> <font color=Magenta>"sel"</font>+<a name="line-55"></a>cssClass Definition <font color=Red>=</font> <font color=Magenta>"definition"</font>+<a name="line-56"></a>cssClass <u><font color=Green>_</font></u>        <font color=Red>=</font> <font color=Magenta>""</font>+<a name="line-57"></a>+<a name="line-58"></a>+<a name="line-59"></a><a name="cssPrefix"></a>cssPrefix title <font color=Red>=</font> unlines+<a name="line-60"></a>    <font color=Red>[</font><font color=Magenta>"&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"&gt;"</font>+<a name="line-61"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;html&gt;"</font>+<a name="line-62"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;head&gt;"</font>+<a name="line-63"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>+<a name="line-64"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;title&gt;"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"&lt;/title&gt;"</font>+<a name="line-65"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;link type='text/css' rel='stylesheet' href='hscolour.css' /&gt;"</font>+<a name="line-66"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;/head&gt;"</font>+<a name="line-67"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;body&gt;"</font>+<a name="line-68"></a>    <font color=Red>]</font>+<a name="line-69"></a>    +<a name="line-70"></a><a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines+<a name="line-71"></a>    <font color=Red>[</font><font color=Magenta>"&lt;/body&gt;"</font>+<a name="line-72"></a>    <font color=Cyan>,</font><font color=Magenta>"&lt;/html&gt;"</font>+<a name="line-73"></a>    <font color=Red>]</font> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/Classify.html view
@@ -1,100 +1,131 @@-<pre><u><font color=Green>module</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> tokenise-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>--<u><font color=Green>import</font></u> Char-<u><font color=Green>import</font></u> List--<font color=Blue>-- Lex Haskell source code into an annotated token stream, without</font>-<font color=Blue>-- discarding any characters or layout.</font>-tokenise <font color=Red>::</font> String <font color=Red>-&gt;</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="tokenise"></a>tokenise <font color=Red>=</font> map <font color=Cyan>(</font><font color=Red>\</font>s<font color=Red>-&gt;</font> <font color=Cyan>(</font>classify s<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> glue <font color=Cyan>.</font> chunk--<font color=Blue>-- Basic Haskell lexing, except we keep whitespace.</font>-chunk <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Red>[</font>String<font color=Red>]</font>-<a name="chunk"></a>chunk <font color=Red>[</font><font color=Red>]</font>    <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>-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>-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-chunk <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>|</font> isLinearSpace c-            <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-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-                    <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'-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>-              <font color=Red>[</font><font color=Red>]</font>             <font color=Red>-&gt;</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>-              <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>-                  <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>-&gt;</font> <font color=Cyan>(</font>tok<font color=Cyan>++</font>com<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk s'-                                       <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-              <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>-&gt;</font> tok<b><font color=Red>:</font></b> chunk rest--<a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t"</font> <font color=Blue>-- " \t\xa0"</font>--<font color=Blue>-- Glue sequences of tokens into more useful blobs</font>-<font color=Blue>--glue (q:".":n:rest) | Char.isUpper (head q)	-- qualified names</font>-<font color=Blue>--                    = glue ((q++"."++n): rest)</font>-<a name="glue"></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` -&gt; varop</font>-  <u><font color=Green>case</font></u> glue rest <u><font color=Green>of</font></u>-    <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>-&gt;</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-    <u><font color=Green>_</font></u>             <font color=Red>-&gt;</font> <font color=Cyan>(</font><font color=Magenta>"`"</font><b><font color=Red>:</font></b> rest<font color=Cyan>)</font>-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>&amp;&amp;</font> length s <font color=Cyan>&gt;=</font><font color=Magenta>2</font>	<font color=Blue>-- eol comment</font>-                  <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-                  <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-<font color=Blue>--glue ("{":"-":ss)  = ("{-"++c): glue rest	-- nested comment</font>-<font color=Blue>--                  where (c,rest) = nestcomment 0 ss</font>-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-glue <font color=Red>[</font><font color=Red>]</font>           <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>--<font color=Blue>-- Deal with comments.</font>-nestcomment <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>-<a name="nestcomment"></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>&gt;=</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>-                                  <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-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>&gt;</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>-                                  <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-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>-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>&gt;=</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>-                                  <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-nestcomment n <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>--eolcomment <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>-<a name="eolcomment"></a>eolcomment s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font> s<font color=Cyan>)</font>-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-eolcomment <font color=Red>[</font><font color=Red>]</font>         <font color=Red>=</font> <font color=Cyan>(</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>,</font><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font>--<font color=Blue>-- Classify tokens</font>-<a name="TokenType"></a><u><font color=Green>data</font></u> TokenType <font color=Red>=</font>-  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>-  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> Error-  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>--classify <font color=Red>::</font> String <font color=Red>-&gt;</font> TokenType-<a name="classify"></a>classify s<font color=Red>@</font><font color=Cyan>(</font>h<b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>-    <font color=Red>|</font> isSpace h              <font color=Red>=</font> Space-    <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-    <font color=Red>|</font> <font color=Magenta>"--"</font> <font color=Cyan>`isPrefixOf`</font> s-      <font color=Cyan>&amp;&amp;</font> any isSpace s       <font color=Red>=</font> Comment		<font color=Blue>-- not fully correct</font>-    <font color=Red>|</font> <font color=Magenta>"{-"</font> <font color=Cyan>`isPrefixOf`</font> s    <font color=Red>=</font> Comment-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keywords      <font color=Red>=</font> Keyword-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> keyglyphs     <font color=Red>=</font> Keyglyph-    <font color=Red>|</font> s <font color=Cyan>`elem`</font> layoutchars   <font color=Red>=</font> Layout-    <font color=Red>|</font> isUpper h              <font color=Red>=</font> Conid-    <font color=Red>|</font> isLower h              <font color=Red>=</font> Varid-    <font color=Red>|</font> h <font color=Cyan>`elem`</font> symbols       <font color=Red>=</font> Varop-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>':'</font>                 <font color=Red>=</font> Conop-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'`'</font>                 <font color=Red>=</font> Varop-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'"'</font>                 <font color=Red>=</font> String-    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'\''</font>                <font color=Red>=</font> Char-    <font color=Red>|</font> isDigit h              <font color=Red>=</font> Number-    <font color=Red>|</font> otherwise              <font color=Red>=</font> Error--<font color=Blue>-- Haskell keywords</font>-<a name="keywords"></a>keywords <font color=Red>=</font>-  <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>"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>-  <font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>,</font><font color=Magenta>"of"</font><font color=Cyan>,</font><font color=Magenta>"then"</font><font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>,</font><font color=Magenta>"where"</font><font color=Cyan>,</font><font color=Magenta>"_"</font><font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>,</font><font color=Magenta>"ccall"</font><font color=Cyan>,</font><font color=Magenta>"as"</font><font color=Red>]</font>-<a name="keyglyphs"></a>keyglyphs <font color=Red>=</font>-  <font color=Red>[</font><font color=Magenta>".."</font><font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>,</font><font color=Magenta>"\\"</font><font color=Cyan>,</font><font color=Magenta>"|"</font><font color=Cyan>,</font><font color=Magenta>"&lt;-"</font><font color=Cyan>,</font><font color=Magenta>"-&gt;"</font><font color=Cyan>,</font><font color=Magenta>"@"</font><font color=Cyan>,</font><font color=Magenta>"~"</font><font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>,</font><font color=Magenta>"["</font><font color=Cyan>,</font><font color=Magenta>"]"</font><font color=Red>]</font>-<a name="layoutchars"></a>layoutchars <font color=Red>=</font>-  map <font color=Cyan>(</font><b><font color=Red>:</font></b><font color=Red>[</font><font color=Red>]</font><font color=Cyan>)</font> <font color=Magenta>";{}(),"</font>-<a name="symbols"></a>symbols <font color=Red>=</font>-  <font color=Magenta>"!#$%&amp;*+./&lt;=&gt;?@\\^|-~"</font>+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/Classify.hs</title>+</head>+<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>Classify+<a name="line-2"></a>  <font color=Cyan>(</font> TokenType<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<a name="line-3"></a>  <font color=Cyan>,</font> tokenise+<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> 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>-- | 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>-&gt;</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>-&gt;</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>-- Basic Haskell lexing, except we keep whitespace.</font>+<a name="line-18"></a>chunk <font color=Red>::</font> String <font color=Red>-&gt;</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>-- 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>-&gt;</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>-&gt;</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>-&gt;</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>-- " \t\xa0"</font>+<a name="line-34"></a>+<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` -&gt; 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>-&gt;</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>-&gt;</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>&amp;&amp;</font> length s <font color=Cyan>&gt;=</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>--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>-&gt;</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>-&gt;</font> <font color=Magenta>"("</font> <b><font color=Red>:</font></b> glue ss+<a name="line-50"></a>              <u><font color=Green>where</font></u> <font color=Cyan>(</font>tuple<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>","</font><font color=Cyan>)</font> ss+<a name="line-51"></a>glue <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> <font color=Magenta>"[]"</font> <b><font color=Red>:</font></b> glue ss+<a name="line-52"></a>glue <font color=Cyan>(</font><font color=Magenta>"\n"</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> <font color=Magenta>"\n"</font> <b><font color=Red>:</font></b> <font color=Cyan>(</font><font color=Magenta>'#'</font><b><font color=Red>:</font></b>concat line<font color=Cyan>)</font> <b><font color=Red>:</font></b> glue rest+<a name="line-53"></a>                  <u><font color=Green>where</font></u> <font color=Cyan>(</font>line<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-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>-- Deal with comments.</font>+<a name="line-58"></a>nestcomment <font color=Red>::</font> Int <font color=Red>-&gt;</font> String <font color=Red>-&gt;</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>&gt;=</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>&gt;</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>-</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>&gt;=</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+<a name="line-66"></a>nestcomment n [] <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font>[]<font color=Cyan>)</font>+<a name="line-67"></a>+<a name="line-68"></a><a name="eolcomment"></a>eolcomment <font color=Red>::</font> String <font color=Red>-&gt;</font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>+<a name="line-69"></a>eolcomment s<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font>[]<font color=Cyan>,</font> s<font color=Cyan>)</font>+<a name="line-70"></a>eolcomment <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font>   <font color=Red>=</font> eolcomment s+<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>-- | 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>+<a name="line-78"></a>  Definition+<a name="line-79"></a>  <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Eq<font color=Cyan>,</font>Show<font color=Cyan>)</font>+<a name="line-80"></a>+<a name="line-81"></a><a name="classify"></a>classify <font color=Red>::</font> String <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> TokenType+<a name="line-82"></a>classify s<font color=Red>@</font><font color=Cyan>(</font>h<b><font color=Red>:</font></b>t<font color=Cyan>)</font> newline+<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>&amp;&amp;</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+<a name="line-90"></a>    <font color=Red>|</font> s <font color=Cyan>`elem`</font> layoutchars   <font color=Red>=</font> Layout+<a name="line-91"></a>    <font color=Red>|</font> isUpper h              <font color=Red>=</font> Conid+<a name="line-92"></a>    <font color=Red>|</font> s <font color=Cyan>==</font> <font color=Magenta>"[]"</font>              <font color=Red>=</font> Conid+<a name="line-93"></a>    <font color=Red>|</font> h <font color=Cyan>==</font> <font color=Magenta>'('</font> <font color=Cyan>&amp;&amp;</font> isTupleTail t <font color=Red>=</font> Conid+<a name="line-94"></a>    <font color=Red>|</font> h <font color=Cyan>==</font> <font color=Magenta>'#'</font>               <font color=Red>=</font> Cpp+<a name="line-95"></a>    <font color=Red>|</font> isLower h              <font color=Red>=</font> <u><font color=Green>if</font></u> newline <u><font color=Green>then</font></u> Definition <u><font color=Green>else</font></u> Varid+<a name="line-96"></a>    <font color=Red>|</font> h <font color=Cyan>`elem`</font> symbols       <font color=Red>=</font> Varop+<a name="line-97"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>':'</font>                 <font color=Red>=</font> Conop+<a name="line-98"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'`'</font>                 <font color=Red>=</font> Varop+<a name="line-99"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'"'</font>                 <font color=Red>=</font> String+<a name="line-100"></a>    <font color=Red>|</font> h<font color=Cyan>==</font><font color=Magenta>'\''</font>                <font color=Red>=</font> Char+<a name="line-101"></a>    <font color=Red>|</font> isDigit h              <font color=Red>=</font> Number+<a name="line-102"></a>    <font color=Red>|</font> otherwise              <font color=Red>=</font> Error+<a name="line-103"></a>classify <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> Space+<a name="line-104"></a>+<a name="line-105"></a><a name="isTupleTail"></a>isTupleTail <font color=Red>[</font><font color=Magenta>')'</font><font color=Red>]</font> <font color=Red>=</font> True+<a name="line-106"></a>isTupleTail <font color=Cyan>(</font><font color=Magenta>','</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> isTupleTail xs+<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>-- 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>+<a name="line-114"></a>  <font color=Cyan>,</font><font color=Magenta>"newtype"</font><font color=Cyan>,</font><font color=Magenta>"of"</font><font color=Cyan>,</font><font color=Magenta>"qualified"</font><font color=Cyan>,</font><font color=Magenta>"then"</font><font color=Cyan>,</font><font color=Magenta>"type"</font><font color=Cyan>,</font><font color=Magenta>"where"</font><font color=Cyan>,</font><font color=Magenta>"_"</font>+<a name="line-115"></a>  <font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>,</font><font color=Magenta>"ccall"</font><font color=Cyan>,</font><font color=Magenta>"as"</font><font color=Cyan>,</font><font color=Magenta>"safe"</font><font color=Cyan>,</font><font color=Magenta>"unsafe"</font><font color=Red>]</font>+<a name="line-116"></a><a name="keyglyphs"></a>keyglyphs <font color=Red>=</font>+<a name="line-117"></a>  <font color=Red>[</font><font color=Magenta>".."</font><font color=Cyan>,</font><font color=Magenta>"::"</font><font color=Cyan>,</font><font color=Magenta>"="</font><font color=Cyan>,</font><font color=Magenta>"\\"</font><font color=Cyan>,</font><font color=Magenta>"|"</font><font color=Cyan>,</font><font color=Magenta>"&lt;-"</font><font color=Cyan>,</font><font color=Magenta>"-&gt;"</font><font color=Cyan>,</font><font color=Magenta>"@"</font><font color=Cyan>,</font><font color=Magenta>"~"</font><font color=Cyan>,</font><font color=Magenta>"=&gt;"</font><font color=Cyan>,</font><font color=Magenta>"["</font><font color=Cyan>,</font><font color=Magenta>"]"</font><font color=Red>]</font>+<a name="line-118"></a><a name="layoutchars"></a>layoutchars <font color=Red>=</font>+<a name="line-119"></a>  map <font color=Cyan>(</font><b><font color=Red>:</font></b>[]<font color=Cyan>)</font> <font color=Magenta>";{}(),"</font>+<a name="line-120"></a><a name="symbols"></a>symbols <font color=Red>=</font>+<a name="line-121"></a>  <font color=Magenta>"!#$%&amp;*+./&lt;=&gt;?@\\^|-~"</font> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html view
@@ -1,21 +1,32 @@-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight-  <font color=Cyan>(</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-  <font color=Cyan>,</font> Highlight<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>--<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-  <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="Highlight"></a><u><font color=Green>data</font></u> Highlight <font color=Red>=</font>-    Normal-  <font color=Red>|</font> Bold-  <font color=Red>|</font> Dim-  <font color=Red>|</font> Underscore-  <font color=Red>|</font> Blink-  <font color=Red>|</font> ReverseVideo-  <font color=Red>|</font> Concealed-  <font color=Red>|</font> Foreground Colour-  <font color=Red>|</font> Background Colour-  <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>-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/ColourHighlight.hs</title>+</head>+<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>ColourHighlight+<a name="line-2"></a>  <font color=Cyan>(</font> Colour<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>+<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>-- | 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>-- | Types of highlighting supported by ANSI codes.</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+<a name="line-14"></a>  <font color=Red>|</font> Dim+<a name="line-15"></a>  <font color=Red>|</font> Underscore+<a name="line-16"></a>  <font color=Red>|</font> Blink+<a name="line-17"></a>  <font color=Red>|</font> ReverseVideo+<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>  <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> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/Colourise.html view
@@ -1,65 +1,89 @@-<pre><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise-  <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-  <font color=Cyan>,</font> ColourPrefs<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font>-  <font color=Cyan>,</font> readColourPrefs-  <font color=Cyan>,</font> colourise-  <font color=Cyan>)</font> <u><font color=Green>where</font></u>--<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>ColourHighlight-<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>--<u><font color=Green>import</font></u> System <font color=Cyan>(</font>getEnv<font color=Cyan>)</font>-<u><font color=Green>import</font></u> Char-<u><font color=Green>import</font></u> List--<font color=Blue>-- | Colour preferences.</font>-<a name="ColourPrefs"></a><u><font color=Green>data</font></u> ColourPrefs <font color=Red>=</font> ColourPrefs-  <font color=Cyan>{</font> keyword<font color=Cyan>,</font> keyglyph<font color=Cyan>,</font> layout<font color=Cyan>,</font> comment-  <font color=Cyan>,</font> conid<font color=Cyan>,</font> varid<font color=Cyan>,</font> conop<font color=Cyan>,</font> varop-  <font color=Cyan>,</font> string<font color=Cyan>,</font> char<font color=Cyan>,</font> number-  <font color=Cyan>,</font> selection<font color=Cyan>,</font> variantselection <font color=Red>::</font> <font color=Red>[</font>Highlight<font color=Red>]</font>-  <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="defaultColourPrefs"></a>defaultColourPrefs <font color=Red>=</font> ColourPrefs-  <font color=Cyan>{</font> keyword  <font color=Red>=</font> <font color=Red>[</font>Foreground Green<font color=Cyan>,</font>Underscore<font color=Red>]</font>-  <font color=Cyan>,</font> keyglyph <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Red>]</font>-  <font color=Cyan>,</font> layout   <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>-  <font color=Cyan>,</font> comment  <font color=Red>=</font> <font color=Red>[</font>Foreground Blue<font color=Red>]</font>-  <font color=Cyan>,</font> conid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-  <font color=Cyan>,</font> varid    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-  <font color=Cyan>,</font> conop    <font color=Red>=</font> <font color=Red>[</font>Foreground Red<font color=Cyan>,</font>Bold<font color=Red>]</font>-  <font color=Cyan>,</font> varop    <font color=Red>=</font> <font color=Red>[</font>Foreground Cyan<font color=Red>]</font>-  <font color=Cyan>,</font> string   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-  <font color=Cyan>,</font> char     <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-  <font color=Cyan>,</font> number   <font color=Red>=</font> <font color=Red>[</font>Foreground Magenta<font color=Red>]</font>-  <font color=Cyan>,</font> selection <font color=Red>=</font> <font color=Red>[</font>Bold<font color=Cyan>,</font> Foreground Magenta<font color=Red>]</font>-  <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>-  <font color=Cyan>}</font>--readColourPrefs <font color=Red>::</font> IO ColourPrefs-<a name="readColourPrefs"></a>readColourPrefs <font color=Red>=</font> catch-  <font color=Cyan>(</font><u><font color=Green>do</font></u> val <font color=Red>&lt;-</font> readFile <font color=Magenta>".hscolour"</font>-      return <font color=Cyan>(</font>read val<font color=Cyan>)</font><font color=Cyan>)</font>-  <font color=Cyan>(</font><font color=Red>\</font>e<font color=Red>-&gt;</font> catch-    <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red>&lt;-</font> getEnv <font color=Magenta>"HOME"</font>-        val <font color=Red>&lt;-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>-        return <font color=Cyan>(</font>read val<font color=Cyan>)</font><font color=Cyan>)</font>-    <font color=Cyan>(</font><font color=Red>\</font>e<font color=Red>-&gt;</font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>--<font color=Blue>-- Convert classification to colour highlights.</font>-colourise <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> TokenType <font color=Red>-&gt;</font> <font color=Red>[</font>Highlight<font color=Red>]</font>-<a name="colourise"></a>colourise pref Space    <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>-colourise pref Comment  <font color=Red>=</font> comment pref-colourise pref Keyword  <font color=Red>=</font> keyword pref-colourise pref Keyglyph <font color=Red>=</font> keyglyph pref-colourise pref Layout   <font color=Red>=</font> layout pref-colourise pref Conid    <font color=Red>=</font> conid pref-colourise pref Varid    <font color=Red>=</font> varid pref-colourise pref Conop    <font color=Red>=</font> conop pref-colourise pref Varop    <font color=Red>=</font> varop pref-colourise pref String   <font color=Red>=</font> string pref-colourise pref Char     <font color=Red>=</font> char pref-colourise pref Number   <font color=Red>=</font> number pref-colourise pref Error    <font color=Red>=</font> selection pref-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/Colourise.hs</title>+</head>+<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>Colourise+<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>-- | Colour preferences.</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=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>-- NOTE, should we give a warning message on a failed reading?</font>+<a name="line-42"></a>parseColourPrefs <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</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>-&gt;</font> return res+<a name="line-46"></a>        <u><font color=Green>_</font></u> <font color=Red>-&gt;</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>-- | Read colour preferences from .hscolour file in the current directory, or failing that,</font>+<a name="line-51"></a><font color=Blue>--   from \$HOME\/.hscolour, and failing that, returns a default set of prefs.</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>&lt;-</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>-&gt;</font> catch+<a name="line-57"></a>    <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red>&lt;-</font> getEnv <font color=Magenta>"HOME"</font>+<a name="line-58"></a>        val <font color=Red>&lt;-</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>-&gt;</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>-- | Convert token classification to colour highlights.</font>+<a name="line-63"></a>colourise <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> TokenType <font color=Red>-&gt;</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> </pre>+</body>+</html>
+ docs/hscolour/Language/Haskell/HsColour/General.html view
@@ -0,0 +1,25 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/General.hs</title>+</head>+<body>+<pre><a name="line-1"></a>+<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>General<font color=Cyan>(</font>+<a name="line-3"></a>    dropLast<font color=Cyan>,</font> dropFirst+<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="line-7"></a><a name="dropLast"></a>dropLast <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>+<a name="line-8"></a>dropLast x <font color=Red>[</font>y<font color=Red>]</font> <font color=Red>|</font> x <font color=Cyan>==</font> y <font color=Red>=</font> []+<a name="line-9"></a>dropLast x <font color=Cyan>(</font>y<b><font color=Red>:</font></b>ys<font color=Cyan>)</font> <font color=Red>=</font> y <b><font color=Red>:</font></b> dropLast x ys+<a name="line-10"></a>dropLast x [] <font color=Red>=</font> []+<a name="line-11"></a>+<a name="line-12"></a>+<a name="line-13"></a><a name="dropFirst"></a>dropFirst <font color=Red>::</font> Eq a <font color=Red>=&gt;</font> a <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-&gt;</font> <font color=Red>[</font>a<font color=Red>]</font>+<a name="line-14"></a>dropFirst x <font color=Cyan>(</font>y<b><font color=Red>:</font></b>ys<font color=Cyan>)</font> <font color=Red>|</font> x <font color=Cyan>==</font> y <font color=Red>=</font> ys+<a name="line-15"></a>dropFirst x ys <font color=Red>=</font> ys+</pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/HTML.html view
@@ -1,69 +1,102 @@-<pre><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>-<u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>HTML -    <font color=Cyan>(</font>hscolour<font color=Cyan>,</font> -     <font color=Blue>-- * Internals</font>-     renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> escape<font color=Cyan>)</font> <u><font color=Green>where</font></u>--<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors-<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-<u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise--<u><font color=Green>import</font></u> Data<font color=Cyan>.</font>Char<font color=Cyan>(</font>isAlphaNum<font color=Cyan>)</font>---<font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>-         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>-<a name="hscolour"></a>hscolour pref anchor <font color=Red>=</font> -    top'n'tail <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor <u><font color=Green>then</font></u> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font> -                                   <font color=Cyan>.</font> insertAnchors-                            <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>.</font> tokenise--top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String-<a name="top'n'tail"></a>top'n'tail <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>--renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String-<a name="renderToken"></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>-                         <font color=Cyan>(</font><u><font color=Green>if</font></u> t <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment s <u><font color=Green>else</font></u> escape s<font color=Cyan>)</font>--renderAnchors <font color=Red>::</font> <font color=Cyan>(</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>-&gt;</font>String<font color=Cyan>)</font>-                 <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String-<a name="renderAnchors"></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>"&lt;a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"&gt;&lt;/a&gt;"</font>-renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r--<font color=Blue>-- if there are http://links/ in a comment, turn them into</font>-<font color=Blue>-- hyperlinks</font>-renderComment <font color=Red>::</font> String <font color=Red>-&gt;</font> String-<a name="renderComment"></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>-        renderLink a <font color=Cyan>++</font> renderComment b-    <u><font color=Green>where</font></u>-        <font color=Blue>-- see http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</font>-        isUrlChar x <font color=Red>=</font> isAlphaNum x <font color=Cyan>||</font> x <font color=Cyan>`elem`</font> <font color=Magenta>":/?#[]@!$&amp;'()*+,;=-._~%"</font>-        <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> span isUrlChar xs-        renderLink link <font color=Red>=</font> <font color=Magenta>"&lt;a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\"&gt;"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"&lt;/a&gt;"</font>-        -renderComment <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> escape <font color=Red>[</font>x<font color=Red>]</font> <font color=Cyan>++</font> renderComment xs-renderComment <font color=Red>[</font><font color=Red>]</font> <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>--<font color=Blue>-- Html stuff</font>-<a name="fontify"></a>fontify <font color=Red>[</font><font color=Red>]</font> s     <font color=Red>=</font> s-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="font"></a>font Normal         s <font color=Red>=</font> s-font Bold           s <font color=Red>=</font> <font color=Magenta>"&lt;b&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/b&gt;"</font>-font Dim            s <font color=Red>=</font> <font color=Magenta>"&lt;em&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/em&gt;"</font>-font Underscore     s <font color=Red>=</font> <font color=Magenta>"&lt;u&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/u&gt;"</font>-font Blink          s <font color=Red>=</font> <font color=Magenta>"&lt;blink&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/blink&gt;"</font>-font ReverseVideo   s <font color=Red>=</font> s-font Concealed      s <font color=Red>=</font> s-font <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>-font <font color=Cyan>(</font>Background c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>--<a name="escape"></a>escape <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;lt;"</font><font color=Cyan>++</font>escape cs-escape <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;gt;"</font><font color=Cyan>++</font>escape cs-escape <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;amp;"</font><font color=Cyan>++</font>escape cs-escape <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>   <font color=Red>=</font> c<b><font color=Red>:</font></b> escape cs-escape <font color=Red>[</font><font color=Red>]</font>       <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/HTML.hs</title>+</head>+<body>+<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>-- * 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+<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>Classify <u><font color=Green>as</font></u> Classify+<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>Colourise+<a name="line-10"></a>+<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>-- | 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>-&gt;</font> Bool        <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-17"></a>         <font color=Red>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output should be partial.</font>+<a name="line-18"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Title for webpage output.</font>+<a name="line-19"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-20"></a>         <font color=Red>-&gt;</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+<a name="line-24"></a>    <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor <u><font color=Green>then</font></u> renderNewLinesAnchors+<a name="line-25"></a>                      <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-26"></a>                      <font color=Cyan>.</font> insertAnchors+<a name="line-27"></a>                 <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-28"></a>    <font color=Cyan>.</font> tokenise+<a name="line-29"></a>+<a name="line-30"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="line-31"></a>top'n'tail title <font color=Red>=</font> <font color=Cyan>(</font>htmlHeader title <font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font>htmlClose<font color=Cyan>)</font>+<a name="line-32"></a>+<a name="line-33"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<a name="line-34"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"&lt;pre&gt;"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"&lt;/pre&gt;"</font><font color=Cyan>)</font>+<a name="line-35"></a>+<a name="line-36"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String+<a name="line-37"></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>+<a name="line-38"></a>                         <font color=Cyan>(</font><u><font color=Green>if</font></u> t <font color=Cyan>==</font> Comment <u><font color=Green>then</font></u> renderComment s <u><font color=Green>else</font></u> escape s<font color=Cyan>)</font>+<a name="line-39"></a>+<a name="line-40"></a><a name="renderAnchors"></a>renderAnchors <font color=Red>::</font> <font color=Cyan>(</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>-&gt;</font>String<font color=Cyan>)</font>+<a name="line-41"></a>                 <font color=Red>-&gt;</font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String+<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>"&lt;a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"&gt;&lt;/a&gt;"</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>-- 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>-&gt;</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>-- 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>":/?#[]@!$&amp;'()*+,;=-._~%"</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>"&lt;a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\"&gt;"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"&lt;/a&gt;"</font>+<a name="line-55"></a>        +<a name="line-56"></a>renderComment <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> escape <font color=Red>[</font>x<font color=Red>]</font> <font color=Cyan>++</font> renderComment xs+<a name="line-57"></a>renderComment [] <font color=Red>=</font> []+<a name="line-58"></a>+<a name="line-59"></a><a name="renderNewLinesAnchors"></a>renderNewLinesAnchors <font color=Red>::</font> String <font color=Red>-&gt;</font> String+<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>"&lt;a name=\"line-"</font> <font color=Cyan>++</font> show line <font color=Cyan>++</font> <font color=Magenta>"\"&gt;&lt;/a&gt;"</font> <font color=Cyan>++</font> s+<a name="line-62"></a>+<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>+<a name="line-67"></a><a name="font"></a>font Normal         s <font color=Red>=</font> s+<a name="line-68"></a>font Bold           s <font color=Red>=</font> <font color=Magenta>"&lt;b&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/b&gt;"</font>+<a name="line-69"></a>font Dim            s <font color=Red>=</font> <font color=Magenta>"&lt;em&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/em&gt;"</font>+<a name="line-70"></a>font Underscore     s <font color=Red>=</font> <font color=Magenta>"&lt;u&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/u&gt;"</font>+<a name="line-71"></a>font Blink          s <font color=Red>=</font> <font color=Magenta>"&lt;blink&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/blink&gt;"</font>+<a name="line-72"></a>font ReverseVideo   s <font color=Red>=</font> s+<a name="line-73"></a>font Concealed      s <font color=Red>=</font> s+<a name="line-74"></a>font <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>+<a name="line-75"></a>font <font color=Cyan>(</font>Background c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"&lt;font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>"&gt;"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"&lt;/font&gt;"</font>+<a name="line-76"></a>+<a name="line-77"></a><a name="escape"></a>escape <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;lt;"</font><font color=Cyan>++</font>escape cs+<a name="line-78"></a>escape <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;gt;"</font><font color=Cyan>++</font>escape cs+<a name="line-79"></a>escape <font color=Cyan>(</font><font color=Magenta>'&amp;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"&amp;amp;"</font><font color=Cyan>++</font>escape cs+<a name="line-80"></a>escape <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>   <font color=Red>=</font> c<b><font color=Red>:</font></b> escape cs+<a name="line-81"></a>escape []       <font color=Red>=</font> []+<a name="line-82"></a>+<a name="line-83"></a><a name="htmlHeader"></a>htmlHeader title <font color=Red>=</font> unlines+<a name="line-84"></a>  <font color=Red>[</font> <font color=Magenta>"&lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\"&gt;"</font>+<a name="line-85"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;html&gt;"</font>+<a name="line-86"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;head&gt;"</font>+<a name="line-87"></a>  <font color=Cyan>,</font><font color=Magenta>"&lt;!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ --&gt;"</font>+<a name="line-88"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;title&gt;"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"&lt;/title&gt;"</font>+<a name="line-89"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;/head&gt;"</font>+<a name="line-90"></a>  <font color=Cyan>,</font> <font color=Magenta>"&lt;body&gt;"</font>+<a name="line-91"></a>  <font color=Red>]</font>+<a name="line-92"></a><a name="htmlClose"></a>htmlClose  <font color=Red>=</font> <font color=Magenta>"\n&lt;/body&gt;\n&lt;/html&gt;"</font> </pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/LaTeX.html view
@@ -1,112 +1,119 @@-<pre><font color=Blue>-- | Formats Haskell source code using LaTeX macros.</font>-<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> hscolourFragment<font color=Cyan>)</font> <u><font color=Green>where</font></u>--<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-<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=Blue>-- | Formats Haskell source code as a complete LaTeX document.</font>-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ An LaTeX document containing the coloured </font>-                        <font color=Blue>--   Haskell source code.</font>-<a name="hscolour"></a>hscolour pref <font color=Red>=</font> top'n'tail <font color=Cyan>.</font> hscolourFragment pref--<font color=Blue>-- | Formats Haskell source code as an LaTeX fragment.</font>-hscolourFragment <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ Haskell source code.</font>-                 <font color=Red>-&gt;</font> String <font color=Blue>-- ^ An LaTeX fragment containing the coloured </font>-                           <font color=Blue>--   Haskell source code.</font>-<a name="hscolourFragment"></a>hscolourFragment pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise--top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</font> String-<a name="top'n'tail"></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>--<font color=Blue>-- | Wrap each lexeme in the appropriate LaTeX macro.</font>-<font color=Blue>--   TODO: filter dangerous characters like "{}_$"</font>-renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String-<a name="renderToken"></a>renderToken pref <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> filterSpace text-renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font>   <font color=Red>=</font> <u><font color=Green>let</font></u> -	symb <font color=Red>=</font> <u><font color=Green>case</font></u> cls <u><font color=Green>of</font></u>-		String <font color=Red>-&gt;</font> <font color=Magenta>"``"</font> <font color=Cyan>++</font> <font color=Cyan>(</font>reverse <font color=Cyan>.</font> tail <font color=Cyan>.</font> reverse <font color=Cyan>.</font> tail <font color=Cyan>$</font> text<font color=Cyan>)</font> <font color=Cyan>++</font> <font color=Magenta>"''"</font>-		<u><font color=Green>_</font></u>      <font color=Red>-&gt;</font> text-	style <font color=Red>=</font> colourise pref cls-	<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 <u><font color=Green>in</font></u>-	<font color=Cyan>(</font>concat pre<font color=Cyan>)</font> <font color=Cyan>++</font> filterSpecial symb <font color=Cyan>++</font> <font color=Cyan>(</font>concat post<font color=Cyan>)</font> --<font color=Blue>-- | Filter white space characters.</font>-filterSpace <font color=Red>::</font> String-            <font color=Red>-&gt;</font> String-<a name="filterSpace"></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>-filterSpace <font color=Cyan>(</font><font color=Magenta>' '</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\hsspace "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>-filterSpace <font color=Cyan>(</font><font color=Magenta>'\t'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\\hstab "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>-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>-filterSpace <font color=Red>[</font><font color=Red>]</font>        <font color=Red>=</font> <font color=Red>[</font><font color=Red>]</font>--<font color=Blue>-- | Filters the characters "#$%&amp;~_^\{}</font><font color=Magenta>" which are special---   in LaTeX.-filterSpecial :: String  -- ^ The string to filter. -              -&gt; String  -- ^ The LaTeX-safe string.-filterSpecial ('#':cs)  = '\\':'#':(filterSpecial cs)-filterSpecial ('$':cs)  = '\\':'$':(filterSpecial cs)-filterSpecial ('%':cs)  = '\\':'%':(filterSpecial cs)-filterSpecial ('&amp;':cs)  = '\\':'&amp;':(filterSpecial cs)-filterSpecial ('~':cs)  = "</font><font color=Cyan>\\</font>tilde<font color=Cyan>{</font> <font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('_':cs)  = '\\':'_':(filterSpecial cs)-filterSpecial ('^':cs)  = "</font><font color=Cyan>\\</font>hat<font color=Cyan>{</font> <font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('\\':cs) = "</font><font color=Cyan>$\\</font>backslash<font color=Cyan>$</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('{':cs)  = '\\':'{':(filterSpecial cs)-filterSpecial ('}':cs)  = '\\':'}':(filterSpecial cs)-filterSpecial ('|':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Red>|</font><font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('&lt;':'-':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>leftarrow<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('&lt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>langle<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('-':'&gt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>rightarrow<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial ('&gt;':cs)  = "</font><font color=Cyan>\\</font>ensuremath<font color=Cyan>{</font><font color=Cyan>\\</font>rangle<font color=Cyan>}</font><font color=Magenta>"++(filterSpecial cs)-filterSpecial (c:cs)    = c:(filterSpecial cs)-filterSpecial []        = []----- | Constructs the appropriate LaTeX macro for the given style.-latexHighlight :: Highlight -&gt; (String, String)-latexHighlight Normal         = ("</font><font color=Cyan>{</font><font color=Cyan>\\</font>rm<font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")-latexHighlight Bold           = ("</font><font color=Cyan>{</font><font color=Cyan>\\</font>bf<font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")-latexHighlight Dim            = ("</font><font color=Magenta>", "</font><font color=Magenta>")-latexHighlight Underscore     = ("</font><font color=Cyan>\\</font>underline<font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")-latexHighlight Blink          = ("</font><font color=Magenta>", "</font><font color=Magenta>")-latexHighlight ReverseVideo   = ("</font><font color=Magenta>", "</font><font color=Magenta>")-latexHighlight Concealed      = ("</font><font color=Cyan>\\</font>conceal<font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")-latexHighlight (Foreground c) = ("</font><font color=Cyan>\\</font>textcolor<font color=Cyan>{</font><font color=Magenta>"++ latexColour c ++"</font><font color=Cyan>}</font><font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")-latexHighlight (Background c) = ("</font><font color=Cyan>\\</font>colorbox<font color=Cyan>{</font><font color=Magenta>"++ latexColour c ++"</font><font color=Cyan>}</font><font color=Cyan>{</font><font color=Magenta>", "</font><font color=Cyan>}</font><font color=Magenta>")---- | Translate a 'Colour' into a LaTeX colour name.-latexColour :: Colour -&gt; String-latexColour Black   = "</font>black<font color=Magenta>"-latexColour Red     = "</font>red<font color=Magenta>"-latexColour Green   = "</font>green<font color=Magenta>"-latexColour Yellow  = "</font>yellow<font color=Magenta>"-latexColour Blue    = "</font>blue<font color=Magenta>"-latexColour Magenta = "</font>magenta<font color=Magenta>"-latexColour Cyan    = "</font>cyan<font color=Magenta>"-latexColour White   = "</font>white<font color=Magenta>"---- | Generic LaTeX document preamble.-latexPrefix = unlines-    ["</font><font color=Cyan>\\</font>documentclass<font color=Red>[</font>a4paper<font color=Cyan>,</font> <font color=Magenta>12</font>pt<font color=Red>]</font><font color=Cyan>{</font>article<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>usepackage<font color=Red>[</font>usenames<font color=Red>]</font><font color=Cyan>{</font>color<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>usepackage<font color=Cyan>{</font>hyperref<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>newsavebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>newsavebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>savebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>1</font>ex<font color=Red>]</font><font color=Cyan>{</font><font color=Red>~</font><font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>savebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>4</font>ex<font color=Red>]</font><font color=Cyan>{</font><font color=Red>~</font><font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>hsspace<font color=Cyan>}</font><font color=Cyan>{</font><font color=Cyan>\\</font>usebox<font color=Cyan>{</font><font color=Cyan>\\</font>spaceb<font color=Cyan>}</font><font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>hstab<font color=Cyan>}</font><font color=Cyan>{</font><font color=Cyan>\\</font>usebox<font color=Cyan>{</font><font color=Cyan>\\</font>tabb<font color=Cyan>}</font><font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>newcommand<font color=Cyan>{</font><font color=Cyan>\\</font>conceal<font color=Cyan>}</font><font color=Red>[</font><font color=Magenta>1</font><font color=Red>]</font><font color=Cyan>{</font><font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>begin<font color=Cyan>{</font>document<font color=Cyan>}</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>noindent<font color=Magenta>"-    ]---- | Generic LaTeX document postamble.-latexSuffix = unlines-    ["</font><font color=Magenta>"-    ,"</font><font color=Cyan>\\</font>end<font color=Cyan>{</font>document<font color=Cyan>}</font><font color=Magenta>"</font>-    <font color=Red>]</font>+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/LaTeX.hs</title>+</head>+<body>+<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>-- | 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>-&gt;</font> Bool        <font color=Blue>-- ^ Whether output should be partial (= no prologue).</font>+<a name="line-11"></a>         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-12"></a>         <font color=Red>-&gt;</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>+<a name="line-17"></a>  <font color=Cyan>.</font> tokenise+<a name="line-18"></a>+<a name="line-19"></a><a name="top'n'tail"></a>top'n'tail <font color=Red>::</font> String <font color=Red>-&gt;</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>-- | 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>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</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>+<a name="line-27"></a>  <u><font color=Green>let</font></u> symb <font color=Red>=</font> <u><font color=Green>case</font></u> cls <u><font color=Green>of</font></u>+<a name="line-28"></a>              String <font color=Red>-&gt;</font> <font color=Magenta>"``"</font> <font color=Cyan>++</font> <font color=Cyan>(</font>dropFirst <font color=Magenta>'\"'</font> <font color=Cyan>$</font> dropLast <font color=Magenta>'\"'</font> <font color=Cyan>$</font> text<font color=Cyan>)</font> <font color=Cyan>++</font> <font color=Magenta>"''"</font>+<a name="line-29"></a>              <u><font color=Green>_</font></u>      <font color=Red>-&gt;</font> text+<a name="line-30"></a>      style <font color=Red>=</font> colourise pref cls+<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>-- | Filter white space characters.</font>+<a name="line-35"></a>filterSpace <font color=Red>::</font> String+<a name="line-36"></a>            <font color=Red>-&gt;</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>+<a name="line-38"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>' '</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\hsspace "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>+<a name="line-39"></a>filterSpace <font color=Cyan>(</font><font color=Magenta>'\t'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\\hstab "</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpace ss<font color=Cyan>)</font>+<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>-- | Filters the characters "#$%&amp;~_^\{}" 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>-&gt;</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>+<a name="line-50"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&amp;'</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>'&amp;'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-51"></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>"\\tilde{ }"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-52"></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-53"></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>"\\ensuremath{\\hat{ }}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-54"></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>"$\\backslash$"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-55"></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-56"></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-57"></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>"\\ensuremath{|}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-58"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\leftarrow}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-59"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&lt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\langle}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-60"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\rightarrow}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-61"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'&gt;'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font>  <font color=Red>=</font> <font color=Magenta>"\\ensuremath{\\rangle}"</font><font color=Cyan>++</font><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-62"></a>filterSpecial <font color=Cyan>(</font>c<b><font color=Red>:</font></b>cs<font color=Cyan>)</font>    <font color=Red>=</font> c<b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<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>-- | Constructs the appropriate LaTeX macro for the given style.</font>+<a name="line-67"></a>latexHighlight <font color=Red>::</font> Highlight <font color=Red>-&gt;</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>+<a name="line-70"></a>latexHighlight Dim            <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>+<a name="line-71"></a>latexHighlight Underscore     <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\underline{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>+<a name="line-72"></a>latexHighlight Blink          <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>+<a name="line-73"></a>latexHighlight ReverseVideo   <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>""</font><font color=Cyan>,</font> <font color=Magenta>""</font><font color=Cyan>)</font>+<a name="line-74"></a>latexHighlight Concealed      <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\conceal{"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>+<a name="line-75"></a>latexHighlight <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"\\textcolor{"</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-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>+<a name="line-78"></a><a name="latexColour"></a><font color=Blue>-- | Translate a 'Colour' into a LaTeX colour name.</font>+<a name="line-79"></a>latexColour <font color=Red>::</font> Colour <font color=Red>-&gt;</font> String+<a name="line-80"></a>latexColour Black   <font color=Red>=</font> <font color=Magenta>"black"</font>+<a name="line-81"></a>latexColour Red     <font color=Red>=</font> <font color=Magenta>"red"</font>+<a name="line-82"></a>latexColour Green   <font color=Red>=</font> <font color=Magenta>"green"</font>+<a name="line-83"></a>latexColour Yellow  <font color=Red>=</font> <font color=Magenta>"yellow"</font>+<a name="line-84"></a>latexColour Blue    <font color=Red>=</font> <font color=Magenta>"blue"</font>+<a name="line-85"></a>latexColour Magenta <font color=Red>=</font> <font color=Magenta>"magenta"</font>+<a name="line-86"></a>latexColour Cyan    <font color=Red>=</font> <font color=Magenta>"cyan"</font>+<a name="line-87"></a>latexColour White   <font color=Red>=</font> <font color=Magenta>"white"</font>+<a name="line-88"></a>+<a name="line-89"></a><a name="latexPrefix"></a><font color=Blue>-- | Generic LaTeX document preamble.</font>+<a name="line-90"></a>latexPrefix <font color=Red>=</font> unlines+<a name="line-91"></a>    <font color=Red>[</font><font color=Magenta>"\\documentclass[a4paper, 12pt]{article}"</font>+<a name="line-92"></a>    <font color=Cyan>,</font><font color=Magenta>"\\usepackage[usenames]{color}"</font>+<a name="line-93"></a>    <font color=Cyan>,</font><font color=Magenta>"\\usepackage{hyperref}"</font>+<a name="line-94"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\spaceb}"</font>+<a name="line-95"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\tabb}"</font>+<a name="line-96"></a>    <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\spaceb}[1ex]{~}"</font>+<a name="line-97"></a>    <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\tabb}[4ex]{~}"</font>+<a name="line-98"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hsspace}{\\usebox{\\spaceb}}"</font>+<a name="line-99"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hstab}{\\usebox{\\tabb}}"</font>+<a name="line-100"></a>    <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\conceal}[1]{}"</font>+<a name="line-101"></a>    <font color=Cyan>,</font><font color=Magenta>"\\begin{document}"</font>+<a name="line-102"></a>    <font color=Cyan>,</font><font color=Magenta>"\\noindent"</font>+<a name="line-103"></a>    <font color=Red>]</font>+<a name="line-104"></a>+<a name="line-105"></a><a name="latexSuffix"></a><font color=Blue>-- | Generic LaTeX document postamble.</font>+<a name="line-106"></a>latexSuffix <font color=Red>=</font> unlines+<a name="line-107"></a>    <font color=Red>[</font><font color=Magenta>""</font>+<a name="line-108"></a>    <font color=Cyan>,</font><font color=Magenta>"\\end{document}"</font>+<a name="line-109"></a>    <font color=Red>]</font> </pre>+</body>+</html>
+ docs/hscolour/Language/Haskell/HsColour/MIRC.html view
@@ -0,0 +1,78 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/MIRC.hs</title>+</head>+<body>+<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+<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><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>-- | 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>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-14"></a>         <font color=Red>-&gt;</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>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</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>-- 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>+<a name="line-25"></a>  <u><font color=Green>where</font></u>+<a name="line-26"></a>    highlight [] s     <font color=Red>=</font> s+<a name="line-27"></a>    highlight <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>highlight hs s<font color=Cyan>)</font>+<a name="line-28"></a>+<a name="line-29"></a>    font Normal         s <font color=Red>=</font> s+<a name="line-30"></a>    font Bold           s <font color=Red>=</font> <font color=Magenta>'\^B'</font><b><font color=Red>:</font></b>s<font color=Cyan>++</font><font color=Magenta>"\^B"</font>+<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>-- 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>-&gt;</font> MircColour+<a name="line-38"></a>joinColours <font color=Red>=</font> foldr join <font color=Cyan>(</font>Mirc <font color=Cyan>{</font>fg<font color=Red>=</font>Black<font color=Cyan>,</font> dim<font color=Red>=</font>False<font color=Cyan>,</font> bg<font color=Red>=</font>Nothing<font color=Cyan>,</font> blink<font color=Red>=</font>False<font color=Cyan>}</font><font color=Cyan>)</font>+<a name="line-39"></a>  <u><font color=Green>where</font></u>+<a name="line-40"></a>    join Blink           mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>blink<font color=Red>=</font>True<font color=Cyan>}</font>+<a name="line-41"></a>    join Dim             mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>dim<font color=Red>=</font>True<font color=Cyan>}</font>+<a name="line-42"></a>    join <font color=Cyan>(</font>Foreground fg<font color=Cyan>)</font> mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>fg<font color=Red>=</font>fg<font color=Cyan>}</font>+<a name="line-43"></a>    join <font color=Cyan>(</font>Background bg<font color=Cyan>)</font> mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>bg<font color=Red>=</font>Just bg<font color=Cyan>}</font>+<a name="line-44"></a>    join Concealed       mirc <font color=Red>=</font> mirc <font color=Cyan>{</font>fg<font color=Red>=</font>Black<font color=Cyan>,</font> bg<font color=Red>=</font>Just Black<font color=Cyan>}</font>+<a name="line-45"></a>    join <u><font color=Green>_</font></u>               mirc <font color=Red>=</font> mirc+<a name="line-46"></a>+<a name="line-47"></a><a name="mircColours"></a>mircColours <font color=Red>::</font> MircColour <font color=Red>-&gt;</font> String <font color=Red>-&gt;</font> String+<a name="line-48"></a>mircColours <font color=Cyan>(</font>Mirc fg dim Nothing   blink<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>'\^C'</font><b><font color=Red>:</font></b> code fg dim<font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"\^O"</font>+<a name="line-49"></a>mircColours <font color=Cyan>(</font>Mirc fg dim <font color=Cyan>(</font>Just bg<font color=Cyan>)</font> blink<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>'\^C'</font><b><font color=Red>:</font></b> code fg dim<font color=Cyan>++</font><font color=Magenta>','</font>+<a name="line-50"></a>                                                   <b><font color=Red>:</font></b> code bg blink<font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"\^O"</font>+<a name="line-51"></a>+<a name="line-52"></a><a name="code"></a>code <font color=Red>::</font> Colour <font color=Red>-&gt;</font> Bool <font color=Red>-&gt;</font> String+<a name="line-53"></a>code Black   False <font color=Red>=</font> <font color=Magenta>"1"</font>+<a name="line-54"></a>code Red     False <font color=Red>=</font> <font color=Magenta>"5"</font>+<a name="line-55"></a>code Green   False <font color=Red>=</font> <font color=Magenta>"3"</font>+<a name="line-56"></a>code Yellow  False <font color=Red>=</font> <font color=Magenta>"7"</font>+<a name="line-57"></a>code Blue    False <font color=Red>=</font> <font color=Magenta>"2"</font>+<a name="line-58"></a>code Magenta False <font color=Red>=</font> <font color=Magenta>"6"</font>+<a name="line-59"></a>code Cyan    False <font color=Red>=</font> <font color=Magenta>"10"</font>+<a name="line-60"></a>code White   False <font color=Red>=</font> <font color=Magenta>"0"</font>+<a name="line-61"></a>code Black   True  <font color=Red>=</font> <font color=Magenta>"14"</font>+<a name="line-62"></a>code Red     True  <font color=Red>=</font> <font color=Magenta>"4"</font>+<a name="line-63"></a>code Green   True  <font color=Red>=</font> <font color=Magenta>"9"</font>+<a name="line-64"></a>code Yellow  True  <font color=Red>=</font> <font color=Magenta>"8"</font>+<a name="line-65"></a>code Blue    True  <font color=Red>=</font> <font color=Magenta>"12"</font>+<a name="line-66"></a>code Magenta True  <font color=Red>=</font> <font color=Magenta>"13"</font>+<a name="line-67"></a>code Cyan    True  <font color=Red>=</font> <font color=Magenta>"11"</font>+<a name="line-68"></a>code White   True  <font color=Red>=</font> <font color=Magenta>"15"</font>+</pre>+</body>+</html>
docs/hscolour/Language/Haskell/HsColour/TTY.html view
@@ -1,16 +1,25 @@-<pre><font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>-<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>--<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-<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>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Colourise--<font color=Blue>-- | Highlights Haskell code with ANSI terminal codes.</font>-hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>-         <font color=Red>-&gt;</font> String      <font color=Blue>-- ^ Coloured Haskell source code.</font>-<a name="hscolour"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise--renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String-<a name="renderToken"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> ANSI<font color=Cyan>.</font>highlight <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">+<html>+<head>+<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->+<title>Language/Haskell/HsColour/TTY.hs</title>+</head>+<body>+<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>-- | 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>-&gt;</font> String      <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-11"></a>         <font color=Red>-&gt;</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>-&gt;</font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-&gt;</font> String+<a name="line-15"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> ANSI<font color=Cyan>.</font>highlight <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s </pre>+</body>+</html>
docs/hscolour/doc-index-C.html view
@@ -211,6 +211,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>Cpp</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-Classify.html#v%3ACpp"+>Language.Haskell.HsColour.Classify</A+></TD+></TR+><TR+><TD CLASS="indexentry" >Cyan</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ACyan"@@ -320,6 +328,16 @@ ><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Aconop" >Language.Haskell.HsColour.Colourise</A >, <A HREF="Language-Haskell-HsColour.html#v%3Aconop"+>Language.Haskell.HsColour</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>cpp</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Acpp"+>Language.Haskell.HsColour.Colourise</A+>, <A HREF="Language-Haskell-HsColour.html#v%3Acpp" >Language.Haskell.HsColour</A ></TD ></TR
docs/hscolour/doc-index-D.html view
@@ -127,12 +127,46 @@ ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR ><TD CLASS="indexentry"+>Definition</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-Classify.html#v%3ADefinition"+>Language.Haskell.HsColour.Classify</A+></TD+></TR+><TR+><TD CLASS="indexentry" >Dim</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3ADim" >Language.Haskell.HsColour.ColourHighlight</A >, Language.Haskell.HsColour.Colourise, <A HREF="Language-Haskell-HsColour-ANSI.html#v%3ADim" >Language.Haskell.HsColour.ANSI</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>definition</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-Colourise.html#v%3Adefinition"+>Language.Haskell.HsColour.Colourise</A+>, <A HREF="Language-Haskell-HsColour.html#v%3Adefinition"+>Language.Haskell.HsColour</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>dropFirst</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-General.html#v%3AdropFirst"+>Language.Haskell.HsColour.General</A+></TD+></TR+><TR+><TD CLASS="indexentry"+>dropLast</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-General.html#v%3AdropLast"+>Language.Haskell.HsColour.General</A ></TD ></TR ></TABLE
docs/hscolour/doc-index-H.html view
@@ -207,28 +207,16 @@ ><TD CLASS="indexannot" >5 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-TTY.html#v%3Ahscolour"->Language.Haskell.HsColour.TTY</A-></TD-></TR-><TR-><TD CLASS="indexentry" COLSPAN="2"->hscolourFragment</TD-></TR-><TR-><TD CLASS="indexannot"->1 (Function)</TD-><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-CSS.html#v%3AhscolourFragment"->Language.Haskell.HsColour.CSS</A+><A HREF="Language-Haskell-HsColour-MIRC.html#v%3Ahscolour"+>Language.Haskell.HsColour.MIRC</A ></TD ></TR ><TR ><TD CLASS="indexannot"->2 (Function)</TD+>6 (Function)</TD ><TD CLASS="indexlinks"-><A HREF="Language-Haskell-HsColour-LaTeX.html#v%3AhscolourFragment"->Language.Haskell.HsColour.LaTeX</A+><A HREF="Language-Haskell-HsColour-TTY.html#v%3Ahscolour"+>Language.Haskell.HsColour.TTY</A ></TD ></TR ></TABLE
docs/hscolour/doc-index-M.html view
@@ -127,6 +127,14 @@ ><TABLE CELLPADDING="0" CELLSPACING="5" ><TR ><TD CLASS="indexentry"+>MIRC</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour.html#v%3AMIRC"+>Language.Haskell.HsColour</A+></TD+></TR+><TR+><TD CLASS="indexentry" >Magenta</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ColourHighlight.html#v%3AMagenta"
docs/hscolour/doc-index-R.html view
@@ -171,6 +171,14 @@ ></TR ><TR ><TD CLASS="indexentry"+>renderNewLinesAnchors</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-HTML.html#v%3ArenderNewLinesAnchors"+>Language.Haskell.HsColour.HTML</A+></TD+></TR+><TR+><TD CLASS="indexentry" >restorePosition</TD ><TD CLASS="indexlinks" ><A HREF="Language-Haskell-HsColour-ANSI.html#v%3ArestorePosition"
docs/hscolour/index.html view
@@ -139,6 +139,16 @@ ></TR ><TR ><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Language-Haskell-HsColour-General.html"+>Language.Haskell.HsColour.General</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Language-Haskell-HsColour-HTML.html" >Language.Haskell.HsColour.HTML</A ></TD@@ -151,6 +161,16 @@ ><TD STYLE="padding-left: 1.25em;width: 44em" ><A HREF="Language-Haskell-HsColour-LaTeX.html" >Language.Haskell.HsColour.LaTeX</A+></TD+><TD+></TD+><TD+></TD+></TR+><TR+><TD STYLE="padding-left: 1.25em;width: 44em"+><A HREF="Language-Haskell-HsColour-MIRC.html"+>Language.Haskell.HsColour.MIRC</A ></TD ><TD ></TD
hscolour.cabal view
@@ -1,5 +1,5 @@ Name: hscolour-Version: 1.9+Version: 1.10 Copyright: Malcolm Wallace, University of York, 2003-2007, Bjorn Bringert 2006 Maintainer: Malcolm Wallace Author: Malcolm Wallace@@ -11,8 +11,13 @@ Synopsis: Colourise Haskell code. Description:   hscolour is a small Haskell script to colourise Haskell code. It currently-  has four output formats: -  ANSI terminal codes, HTML 3.2 with <font> tags, HTML 4.01 with CSS, and LaTeX.+  has five output formats: +  ANSI terminal codes,+  HTML 3.2 with <font> tags,+  HTML 4.01 with CSS,+  LaTeX,+  and mIRC chat codes.+Category: Language Exposed-Modules:    Language.Haskell.HsColour,   Language.Haskell.HsColour.ANSI,@@ -27,7 +32,8 @@   Language.Haskell.HsColour.MIRC,   Language.Haskell.HsColour.CSS data-files: hscolour.css-ghc-options: -O -W+--ghc-options: -O -W+Build-Type: Simple  Executable: HsColour Main-is: HsColour.hs
index.html view
@@ -163,7 +163,7 @@  <p> <h2>Copyright and licence</h2>-<b>hscolour</b> is &copy; Malcolm Wallace 2003-2007.  It is distributed+<b>hscolour</b> is &copy; Malcolm Wallace 2003-2008.  It is distributed under the Gnu GPL, which can be found in the file <a href="LICENCE-GPL">LICENCE-GPL</a>. @@ -187,6 +187,7 @@ <h2>History</h2> <p> <dl>+<dt>1.10</dt><dd> the title of HTML output is now the filename</dd> <dt>1.9</dt><dd> added the -mirc and -lit options, and -print-css</dd> <dt>1.8</dt><dd> added highlights for cpp lines                  <br>tuple constructors now treated as ConIds@@ -203,7 +204,7 @@ </dl>  <p>-This page last modified: 8th Jan 2008<br>+This page last modified: 22nd July 2008<br> Malcolm Wallace<br>  </td></tr></table>