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 +2/−1
- Language/Haskell/HsColour.hs +15/−14
- Language/Haskell/HsColour/ANSI.hs +6/−3
- Language/Haskell/HsColour/CSS.hs +7/−6
- Language/Haskell/HsColour/Classify.hs +3/−3
- Language/Haskell/HsColour/ColourHighlight.hs +2/−0
- Language/Haskell/HsColour/Colourise.hs +3/−1
- Language/Haskell/HsColour/HTML.hs +15/−7
- Language/Haskell/HsColour/MIRC.hs +1/−1
- Makefile +1/−1
- docs/hscolour/Language-Haskell-HsColour-ANSI.html +262/−0
- docs/hscolour/Language-Haskell-HsColour-CSS.html +8/−59
- docs/hscolour/Language-Haskell-HsColour-Classify.html +167/−0
- docs/hscolour/Language-Haskell-HsColour-ColourHighlight.html +174/−0
- docs/hscolour/Language-Haskell-HsColour-Colourise.html +23/−0
- docs/hscolour/Language-Haskell-HsColour-General.html +134/−0
- docs/hscolour/Language-Haskell-HsColour-HTML.html +48/−2
- docs/hscolour/Language-Haskell-HsColour-LaTeX.html +5/−67
- docs/hscolour/Language-Haskell-HsColour-MIRC.html +178/−0
- docs/hscolour/Language-Haskell-HsColour.html +83/−5
- docs/hscolour/Language/Haskell/HsColour.html +96/−36
- docs/hscolour/Language/Haskell/HsColour/ANSI.html +105/−93
- docs/hscolour/Language/Haskell/HsColour/Anchors.html +142/−130
- docs/hscolour/Language/Haskell/HsColour/CSS.html +82/−65
- docs/hscolour/Language/Haskell/HsColour/Classify.html +130/−99
- docs/hscolour/Language/Haskell/HsColour/ColourHighlight.html +31/−20
- docs/hscolour/Language/Haskell/HsColour/Colourise.html +88/−64
- docs/hscolour/Language/Haskell/HsColour/General.html +25/−0
- docs/hscolour/Language/Haskell/HsColour/HTML.html +101/−68
- docs/hscolour/Language/Haskell/HsColour/LaTeX.html +118/−111
- docs/hscolour/Language/Haskell/HsColour/MIRC.html +78/−0
- docs/hscolour/Language/Haskell/HsColour/TTY.html +24/−15
- docs/hscolour/doc-index-C.html +18/−0
- docs/hscolour/doc-index-D.html +34/−0
- docs/hscolour/doc-index-H.html +5/−17
- docs/hscolour/doc-index-M.html +8/−0
- docs/hscolour/doc-index-R.html +8/−0
- docs/hscolour/index.html +20/−0
- hscolour.cabal +10/−4
- index.html +3/−2
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+>] -> String -> 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 -> Int -> 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 -> Int -> 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 -> String -> String</TD-></TR-><TR-><TD CLASS="s8"-></TD-></TR-><TR-><TD CLASS="decl"-><A HREF="#v%3AhscolourFragment"->hscolourFragment</A-> :: Bool -> String -> String</TD+> :: Bool -> Bool -> String -> String -> 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"->-> String</TD+>-> 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" >-> 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" >-> 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 -> [(<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 => a -> [a] -> [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 => a -> [a] -> [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-> -> Bool -> String -> String</TD+> -> Bool -> Bool -> String -> String -> String</TD ></TR ><TR ><TD CLASS="s8"@@ -135,6 +135,16 @@ >renderComment</A > :: String -> String</TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3ArenderNewLinesAnchors"+>renderNewLinesAnchors</A+> :: String -> String</TD+></TR ></TABLE ></TD ></TR@@ -184,13 +194,27 @@ ><TD CLASS="arg" >-> Bool</TD ><TD CLASS="rdoc"->Whether to include anchors+>Whether to include anchors. </TD ></TR ><TR ><TD CLASS="arg"+>-> Bool</TD+><TD CLASS="rdoc"+>Whether output should be partial.+</TD+></TR+><TR+><TD CLASS="arg" >-> String</TD ><TD CLASS="rdoc"+>Title for webpage output.+</TD+></TR+><TR+><TD CLASS="arg"+>-> String</TD+><TD CLASS="rdoc" >Haskell source code. </TD ></TR@@ -262,6 +286,28 @@ > :: String -> 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 -> 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-> -> String -> 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-> -> String -> String</TD+> -> Bool -> String -> String</TD ></TR ></TABLE ></TD@@ -153,59 +141,9 @@ ></TR ><TR ><TD CLASS="arg"->-> String</TD-><TD CLASS="rdoc"->Haskell source code.-</TD-></TR-><TR-><TD CLASS="arg"->-> 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+>-> Bool</TD ><TD CLASS="rdoc"->Colour preferences.+>Whether output should be partial (= no prologue). </TD ></TR ><TR@@ -219,13 +157,13 @@ ><TD CLASS="arg" >-> 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+> -> String -> 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"+>-> String</TD+><TD CLASS="rdoc"+>Haskell source code.+</TD+></TR+><TR+><TD CLASS="arg"+>-> 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 > -> <A HREF="Language-Haskell-HsColour.html#t%3AColourPrefs" >ColourPrefs</A-> -> Bool -> String -> String</TD+> -> Bool -> Bool -> Bool -> String -> String -> 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"+>-> Bool</TD+><TD CLASS="rdoc"+>Whether output document is partial or complete.+</TD+></TR+><TR+><TD CLASS="arg"+>-> Bool</TD+><TD CLASS="rdoc"+>Whether input document is literate haskell or not+</TD+></TR+><TR+><TD CLASS="arg" >-> String</TD ><TD CLASS="rdoc"+>Title for output.+</TD+></TR+><TR+><TD CLASS="arg"+>-> 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>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences for formats that support it.</font>- <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>- <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>+<a name="line-35"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-36"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-37"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether input document is literate haskell or not</font>+<a name="line-38"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output.</font>+<a name="line-39"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-40"></a> <font color=Red>-></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>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them).</font>+<a name="line-50"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-51"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output document is partial or complete.</font>+<a name="line-52"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output.</font>+<a name="line-53"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-54"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-55"></a>hscolour' TTY pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref+<a name="line-56"></a>hscolour' MIRC pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref+<a name="line-57"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u> partial <u><font color=Green>_</font></u> <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref partial+<a name="line-58"></a>hscolour' HTML pref 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>-></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 > 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>-></font> Literate+<a name="line-79"></a>lhsClassify <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>+<a name="line-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>-></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>-></font> String <font color=Red>-></font> String-goto <font color=Red>::</font> Int <font color=Red>-></font> Int <font color=Red>-></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>-></font> String <font color=Red>-></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>-></font> Int <font color=Red>-></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>-></font> String <font color=Red>-></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>-></font> Int <font color=Red>-></font> String+<a name="line-30"></a><a name="home"></a>home <font color=Red>::</font> String+<a name="line-31"></a><a name="cls"></a><font color=Blue>-- | 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>-></font> String <font color=Red>-></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>-></font> Int <font color=Red>-></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>-></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>-></font> emit st s- Just v <font color=Red>-></font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s--<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>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>- notVarop <font color=Blue>-- | typesig stream -> Nothing -- not a defn</font>- <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing <font color=Blue>-- already defined</font>- <font color=Red>|</font> otherwise <font color=Red>-></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 -> Nothing</font>- <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing- <font color=Red>|</font> otherwise <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>- notVarop <font color=Red>-></font> <u><font color=Green>case</font></u> skip <font color=Cyan>(</font>munchParens stream<font color=Cyan>)</font> <u><font color=Green>of</font></u>- <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>- <u><font color=Green>_</font></u> <font color=Red>-></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>-></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 "=>", 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>-></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>-></font> Just c- <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>more<font color=Cyan>)</font> <font color=Red>-></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>-></font> Just c'- v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =>"</font><font color=Cyan>)</font>- v <font color=Red>-></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 =>"</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>-></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>more<font color=Cyan>)</font> <font color=Red>-></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>-></font> Just c'- v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =>"</font><font color=Cyan>)</font>- v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =>"</font><font color=Cyan>)</font>- v <font color=Red>-></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>"=>"</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>-></font> ST <font color=Red>-></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>-></font> ST <font color=Red>-></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>-></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>-></font> emit st s+<a name="line-32"></a> Just v <font color=Red>-></font> Left v<b><font color=Red>:</font></b> emit <font color=Cyan>(</font>insertST v st<font color=Cyan>)</font> s+<a name="line-33"></a>+<a name="line-34"></a><a name="emit"></a><font color=Blue>-- 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>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>+<a name="line-47"></a> notVarop <font color=Blue>-- | typesig stream -> Nothing -- not a defn</font>+<a name="line-48"></a> <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing <font color=Blue>-- already defined</font>+<a name="line-49"></a> <font color=Red>|</font> otherwise <font color=Red>-></font> Just v+<a name="line-50"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>"("</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-51"></a> <u><font color=Green>case</font></u> stream <u><font color=Green>of</font></u>+<a name="line-52"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><font color=Cyan>(</font>Layout<font color=Cyan>,</font><font color=Magenta>")"</font><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>+<a name="line-53"></a> <font color=Blue>-- | typesig stream -> Nothing</font>+<a name="line-54"></a> <font color=Red>|</font> v <font color=Cyan>`inST`</font> st <font color=Red>-></font> Nothing+<a name="line-55"></a> <font color=Red>|</font> otherwise <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>+<a name="line-56"></a> notVarop <font color=Red>-></font> <u><font color=Green>case</font></u> skip <font color=Cyan>(</font>munchParens stream<font color=Cyan>)</font> <u><font color=Green>of</font></u>+<a name="line-57"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Varop<font color=Cyan>,</font>v<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>|</font> not <font color=Cyan>(</font>v<font color=Cyan>`inST`</font>st<font color=Cyan>)</font> <font color=Red>-></font> Just <font color=Cyan>(</font>fix v<font color=Cyan>)</font>+<a name="line-58"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> Nothing+<a name="line-59"></a>identifier st t<font color=Red>@</font><font color=Cyan>(</font><font color=Cyan>(</font>Keyword<font color=Cyan>,</font><font color=Magenta>"foreign"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>stream<font color=Cyan>)</font> <font color=Red>=</font> Nothing <font color=Blue>-- 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>-></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 "=>", returning next Conid token</font>+<a name="line-95"></a><font color=Blue>-- (this function is highly partial - relies on source being parse-correct)</font>+<a name="line-96"></a>getConid stream <font color=Red>=</font>+<a name="line-97"></a> <u><font color=Green>case</font></u> skip stream <u><font color=Green>of</font></u>+<a name="line-98"></a> <font color=Cyan>(</font><font color=Cyan>(</font>Conid<font color=Cyan>,</font>c<font color=Cyan>)</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-></font> <u><font color=Green>case</font></u> context rest <u><font color=Green>of</font></u>+<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>-></font> Just c+<a name="line-100"></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>more<font color=Cyan>)</font> <font color=Red>-></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>-></font> Just c'+<a name="line-103"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"Conid "</font><font color=Cyan>++</font>c<font color=Cyan>++</font><font color=Magenta>" =>"</font><font color=Cyan>)</font>+<a name="line-104"></a> v <font color=Red>-></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 =>"</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>-></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>"=>"</font><font color=Cyan>)</font><b><font color=Red>:</font></b>more<font color=Cyan>)</font> <font color=Red>-></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>-></font> Just c'+<a name="line-109"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) =>"</font><font color=Cyan>)</font>+<a name="line-110"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"(...) no =>"</font><font color=Cyan>)</font>+<a name="line-111"></a> v <font color=Red>-></font> debug v <font color=Cyan>(</font><font color=Magenta>"no Conid or (...)"</font><font color=Cyan>)</font>+<a name="line-112"></a> <u><font color=Green>where</font></u> debug <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> Nothing+<a name="line-113"></a> <font color=Blue>-- 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>"=>"</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>-></font> ST <font color=Red>-></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>-></font> ST <font color=Red>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></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>-></font> String-<a name="pre"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre>"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"</pre>"</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>-></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>"<span class='"</font> <font color=Cyan>++</font> cssClass cls <font color=Cyan>++</font> <font color=Magenta>"'>"</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>"</span>"</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>"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"</font>- <font color=Cyan>,</font><font color=Magenta>"<html>"</font>- <font color=Cyan>,</font><font color=Magenta>"<head>"</font>- <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>- <font color=Cyan>,</font><font color=Magenta>"<title>Haskell Code by HsColour</title>"</font>- <font color=Cyan>,</font><font color=Magenta>"<link type='text/css' rel='stylesheet' href='hscolour.css' />"</font>- <font color=Cyan>,</font><font color=Magenta>"</head>"</font>- <font color=Cyan>,</font><font color=Magenta>"<body>"</font>- <font color=Red>]</font>- -<a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines- <font color=Red>[</font><font color=Magenta>"</body>"</font>- <font color=Cyan>,</font><font color=Magenta>"</html>"</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>-></font> Bool <font color=Blue>-- ^ Whether output should be partial</font>+<a name="line-12"></a> <font color=Blue>-- (= no stylesheet link will be included.)</font>+<a name="line-13"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for HTML page.</font>+<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>+<a name="line-16"></a> <font color=Blue>-- Haskell source code.</font>+<a name="line-17"></a>hscolour anchor partial title <font color=Red>=</font>+<a name="line-18"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font>+<a name="line-19"></a> <font color=Cyan>.</font> pre+<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>-></font> String <font color=Red>-></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>-></font> String+<a name="line-31"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre>"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"</pre>"</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>-></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>"<span class='"</font> <font color=Cyan>++</font> cls2 <font color=Cyan>++</font> <font color=Magenta>"'>"</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>"</span>"</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>"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"</font>+<a name="line-61"></a> <font color=Cyan>,</font><font color=Magenta>"<html>"</font>+<a name="line-62"></a> <font color=Cyan>,</font><font color=Magenta>"<head>"</font>+<a name="line-63"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>+<a name="line-64"></a> <font color=Cyan>,</font><font color=Magenta>"<title>"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"</title>"</font>+<a name="line-65"></a> <font color=Cyan>,</font><font color=Magenta>"<link type='text/css' rel='stylesheet' href='hscolour.css' />"</font>+<a name="line-66"></a> <font color=Cyan>,</font><font color=Magenta>"</head>"</font>+<a name="line-67"></a> <font color=Cyan>,</font><font color=Magenta>"<body>"</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>"</body>"</font>+<a name="line-72"></a> <font color=Cyan>,</font><font color=Magenta>"</html>"</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>-></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>-></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>-></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>-></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>-></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>-></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` -> 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>-></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>-></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>&&</font> length s <font color=Cyan>>=</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>-></font> String <font color=Red>-></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>>=</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>></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>>=</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>-></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>-></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>&&</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>"<-"</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>"["</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>"!#$%&*+./<=>?@\\^|-~"</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>-></font> <font color=Red>[</font><font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font><font color=Red>]</font>+<a name="line-12"></a>tokenise str <font color=Red>=</font> +<a name="line-13"></a> <u><font color=Green>let</font></u> chunks <font color=Red>=</font> glue <font color=Cyan>.</font> chunk <font color=Cyan>$</font> str +<a name="line-14"></a> newline <font color=Red>=</font> True <b><font color=Red>:</font></b> <font color=Cyan>(</font>map <font color=Cyan>(</font><font color=Magenta>"\n"</font> <font color=Cyan>`isPrefixOf`</font><font color=Cyan>)</font> chunks<font color=Cyan>)</font>+<a name="line-15"></a> <u><font color=Green>in</font></u> map <font color=Cyan>(</font><font color=Red>\</font><font color=Cyan>(</font>s<font color=Cyan>,</font>n<font color=Cyan>)</font><font color=Red>-></font> <font color=Cyan>(</font>classify s n<font color=Cyan>,</font>s<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Cyan>(</font>zip chunks newline<font color=Cyan>)</font>+<a name="line-16"></a>+<a name="line-17"></a><a name="chunk"></a><font color=Blue>-- Basic Haskell lexing, except we keep whitespace.</font>+<a name="line-18"></a>chunk <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="line-19"></a>chunk [] <font color=Red>=</font> []+<a name="line-20"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\r'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> chunk s <font color=Blue>-- get rid of DOS newline stuff</font>+<a name="line-21"></a>chunk <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"\n"</font><b><font color=Red>:</font></b> chunk s+<a name="line-22"></a>chunk <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>|</font> isLinearSpace c+<a name="line-23"></a> <font color=Red>=</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b>ss<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk rest <u><font color=Green>where</font></u> <font color=Cyan>(</font>ss<font color=Cyan>,</font>rest<font color=Cyan>)</font> <font color=Red>=</font> span isLinearSpace s+<a name="line-24"></a>chunk <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> <font color=Red>=</font> <u><font color=Green>let</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Magenta>0</font> s+<a name="line-25"></a> <u><font color=Green>in</font></u> <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>com<font color=Cyan>)</font> <b><font color=Red>:</font></b> chunk s'+<a name="line-26"></a>chunk s <font color=Red>=</font> <u><font color=Green>case</font></u> Prelude<font color=Cyan>.</font>lex s <u><font color=Green>of</font></u>+<a name="line-27"></a> [] <font color=Red>-></font> <font color=Red>[</font>head s<font color=Red>]</font><b><font color=Red>:</font></b> chunk <font color=Cyan>(</font>tail s<font color=Cyan>)</font> <font color=Blue>-- e.g. inside comment</font>+<a name="line-28"></a> <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font><font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font>+<a name="line-29"></a> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> tok <font color=Red>-></font> <font color=Cyan>(</font>tok<font color=Cyan>++</font>com<font color=Cyan>)</font><b><font color=Red>:</font></b> chunk s'+<a name="line-30"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>com<font color=Cyan>,</font>s'<font color=Cyan>)</font> <font color=Red>=</font> eolcomment rest+<a name="line-31"></a> <font color=Cyan>(</font><font color=Cyan>(</font>tok<font color=Cyan>,</font>rest<font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>-></font> tok<b><font color=Red>:</font></b> chunk rest+<a name="line-32"></a>+<a name="line-33"></a><a name="isLinearSpace"></a>isLinearSpace c <font color=Red>=</font> c <font color=Cyan>`elem`</font> <font color=Magenta>" \t\f"</font> <font color=Blue>-- " \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` -> varop</font>+<a name="line-39"></a> <u><font color=Green>case</font></u> glue rest <u><font color=Green>of</font></u>+<a name="line-40"></a> <font color=Cyan>(</font>qn<b><font color=Red>:</font></b><font color=Magenta>"`"</font><b><font color=Red>:</font></b>rest<font color=Cyan>)</font> <font color=Red>-></font> <font color=Cyan>(</font><font color=Magenta>"`"</font><font color=Cyan>++</font>qn<font color=Cyan>++</font><font color=Magenta>"`"</font><font color=Cyan>)</font><b><font color=Red>:</font></b> glue rest+<a name="line-41"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <font color=Magenta>"`"</font><b><font color=Red>:</font></b> glue rest+<a name="line-42"></a>glue <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> all <font color=Cyan>(</font><font color=Cyan>==</font><font color=Magenta>'-'</font><font color=Cyan>)</font> s <font color=Cyan>&&</font> length s <font color=Cyan>>=</font><font color=Magenta>2</font> <font color=Blue>-- 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>-></font> <font color=Cyan>(</font><font color=Magenta>"("</font> <font color=Cyan>++</font> concat tuple <font color=Cyan>++</font> <font color=Magenta>")"</font><font color=Cyan>)</font> <b><font color=Red>:</font></b> glue rest+<a name="line-49"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <font color=Magenta>"("</font> <b><font color=Red>:</font></b> glue ss+<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>-></font> String <font color=Red>-></font> <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>+<a name="line-59"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'{'</font><b><font color=Red>:</font></b><font color=Magenta>'-'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>>=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"{-"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>+<a name="line-60"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Cyan>+</font><font color=Magenta>1</font><font color=Cyan>)</font> ss+<a name="line-61"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>></font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>++</font>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>+<a name="line-62"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment <font color=Cyan>(</font>n<font color=Blue>-</font><font color=Magenta>1</font><font color=Cyan>)</font> ss+<a name="line-63"></a>nestcomment n <font color=Cyan>(</font><font color=Magenta>'-'</font><b><font color=Red>:</font></b><font color=Magenta>'}'</font><b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>==</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"-}"</font><font color=Cyan>,</font>ss<font color=Cyan>)</font>+<a name="line-64"></a>nestcomment n <font color=Cyan>(</font>s<b><font color=Red>:</font></b>ss<font color=Cyan>)</font> <font color=Red>|</font> n<font color=Cyan>>=</font><font color=Magenta>0</font> <font color=Red>=</font> <font color=Cyan>(</font><font color=Cyan>(</font>s<b><font color=Red>:</font></b>cs<font color=Cyan>)</font><font color=Cyan>,</font>rm<font color=Cyan>)</font>+<a name="line-65"></a> <u><font color=Green>where</font></u> <font color=Cyan>(</font>cs<font color=Cyan>,</font>rm<font color=Cyan>)</font> <font color=Red>=</font> nestcomment n ss+<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>-></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>-></font> Bool <font color=Red>-></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>&&</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>&&</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>"<-"</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>"["</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>"!#$%&*+./<=>?@\\^|-~"</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><-</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>-></font> catch- <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red><-</font> getEnv <font color=Magenta>"HOME"</font>- val <font color=Red><-</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>-></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>-></font> TokenType <font color=Red>-></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>-></font> String <font color=Red>-></font> IO ColourPrefs+<a name="line-43"></a>parseColourPrefs file x <font color=Red>=</font>+<a name="line-44"></a> <u><font color=Green>case</font></u> reads x <u><font color=Green>of</font></u>+<a name="line-45"></a> <font color=Cyan>(</font>res<font color=Cyan>,</font><u><font color=Green>_</font></u><font color=Cyan>)</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u> <font color=Red>-></font> return res+<a name="line-46"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> <u><font color=Green>do</font></u> hPutStrLn stderr <font color=Cyan>(</font><font color=Magenta>"Could not parse colour prefs from "</font><font color=Cyan>++</font>file+<a name="line-47"></a> <font color=Cyan>++</font><font color=Magenta>": reverting to defaults"</font><font color=Cyan>)</font>+<a name="line-48"></a> return defaultColourPrefs+<a name="line-49"></a>+<a name="line-50"></a><a name="readColourPrefs"></a><font color=Blue>-- | 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><-</font> readFile <font color=Magenta>".hscolour"</font>+<a name="line-55"></a> parseColourPrefs <font color=Magenta>".hscolour"</font> val<font color=Cyan>)</font>+<a name="line-56"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> catch+<a name="line-57"></a> <font color=Cyan>(</font><u><font color=Green>do</font></u> home <font color=Red><-</font> getEnv <font color=Magenta>"HOME"</font>+<a name="line-58"></a> val <font color=Red><-</font> readFile <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font>+<a name="line-59"></a> parseColourPrefs <font color=Cyan>(</font>home<font color=Cyan>++</font><font color=Magenta>"/.hscolour"</font><font color=Cyan>)</font> val<font color=Cyan>)</font>+<a name="line-60"></a> <font color=Cyan>(</font><font color=Red>\</font><u><font color=Green>_</font></u><font color=Red>-></font> return defaultColourPrefs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-61"></a>+<a name="line-62"></a><a name="colourise"></a><font color=Blue>-- | Convert token classification to colour highlights.</font>+<a name="line-63"></a>colourise <font color=Red>::</font> ColourPrefs <font color=Red>-></font> TokenType <font color=Red>-></font> <font color=Red>[</font>Highlight<font color=Red>]</font>+<a name="line-64"></a>colourise pref Space <font color=Red>=</font> <font color=Red>[</font>Normal<font color=Red>]</font>+<a name="line-65"></a>colourise pref Comment <font color=Red>=</font> comment pref+<a name="line-66"></a>colourise pref Keyword <font color=Red>=</font> keyword pref+<a name="line-67"></a>colourise pref Keyglyph <font color=Red>=</font> keyglyph pref+<a name="line-68"></a>colourise pref Layout <font color=Red>=</font> layout pref+<a name="line-69"></a>colourise pref Conid <font color=Red>=</font> conid pref+<a name="line-70"></a>colourise pref Varid <font color=Red>=</font> varid pref+<a name="line-71"></a>colourise pref Conop <font color=Red>=</font> conop pref+<a name="line-72"></a>colourise pref Varop <font color=Red>=</font> varop pref+<a name="line-73"></a>colourise pref String <font color=Red>=</font> string pref+<a name="line-74"></a>colourise pref Char <font color=Red>=</font> char pref+<a name="line-75"></a>colourise pref Number <font color=Red>=</font> number pref+<a name="line-76"></a>colourise pref Cpp <font color=Red>=</font> cpp pref+<a name="line-77"></a>colourise pref Error <font color=Red>=</font> selection pref+<a name="line-78"></a>colourise pref Definition <font color=Red>=</font> definition pref+<a name="line-79"></a> </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>=></font> a <font color=Red>-></font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-></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>=></font> a <font color=Red>-></font> <font color=Red>[</font>a<font color=Red>]</font> <font color=Red>-></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>-></font> Bool <font color=Blue>-- ^ Whether to include anchors</font>- <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></font> String-<a name="top'n'tail"></a>top'n'tail <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre>"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"</pre>"</font><font color=Cyan>)</font>--renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String-<a name="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>-></font>String<font color=Cyan>)</font>- <font color=Red>-></font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></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>"<a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"></a>"</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>-></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>":/?#[]@!$&'()*+,;=-._~%"</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>"<a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\">"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"</a>"</font>- -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>"<b>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</b>"</font>-font Dim s <font color=Red>=</font> <font color=Magenta>"<em>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</em>"</font>-font Underscore s <font color=Red>=</font> <font color=Magenta>"<u>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</u>"</font>-font Blink s <font color=Red>=</font> <font color=Magenta>"<blink>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</blink>"</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>"<font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>">"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</font>"</font>-font <font color=Cyan>(</font>Background c<font color=Cyan>)</font> s <font color=Red>=</font> <font color=Magenta>"<font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>">"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</font>"</font>--<a name="escape"></a>escape <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>"&lt;"</font><font color=Cyan>++</font>escape cs-escape <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>"&gt;"</font><font color=Cyan>++</font>escape cs-escape <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>"&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>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-17"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial.</font>+<a name="line-18"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for webpage output.</font>+<a name="line-19"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-20"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-21"></a>hscolour pref anchor partial title <font color=Red>=</font> +<a name="line-22"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font>+<a name="line-23"></a> <font color=Cyan>.</font> pre+<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>-></font> String <font color=Red>-></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>-></font> String+<a name="line-34"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre>"</font><font color=Cyan>++</font><font color=Cyan>)</font> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"</pre>"</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>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></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>-></font>String<font color=Cyan>)</font>+<a name="line-41"></a> <font color=Red>-></font> Either String <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></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>"<a name=\""</font><font color=Cyan>++</font>v<font color=Cyan>++</font><font color=Magenta>"\"></a>"</font>+<a name="line-43"></a>renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r+<a name="line-44"></a>+<a name="line-45"></a><a name="renderComment"></a><font color=Blue>-- if there are <a href="http://links/">http://links/</a> in a comment, turn them into</font>+<a name="line-46"></a><font color=Blue>-- hyperlinks</font>+<a name="line-47"></a>renderComment <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-48"></a>renderComment xs<font color=Red>@</font><font color=Cyan>(</font><font color=Magenta>'h'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'t'</font><b><font color=Red>:</font></b><font color=Magenta>'p'</font><b><font color=Red>:</font></b><font color=Magenta>':'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><font color=Magenta>'/'</font><b><font color=Red>:</font></b><u><font color=Green>_</font></u><font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-49"></a> renderLink a <font color=Cyan>++</font> renderComment b+<a name="line-50"></a> <u><font color=Green>where</font></u>+<a name="line-51"></a> <font color=Blue>-- see <a href="http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters">http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#characters</a></font>+<a name="line-52"></a> isUrlChar x <font color=Red>=</font> isAlphaNum x <font color=Cyan>||</font> x <font color=Cyan>`elem`</font> <font color=Magenta>":/?#[]@!$&'()*+,;=-._~%"</font>+<a name="line-53"></a> <font color=Cyan>(</font>a<font color=Cyan>,</font>b<font color=Cyan>)</font> <font color=Red>=</font> span isUrlChar xs+<a name="line-54"></a> renderLink link <font color=Red>=</font> <font color=Magenta>"<a href=\""</font> <font color=Cyan>++</font> link <font color=Cyan>++</font> <font color=Magenta>"\">"</font> <font color=Cyan>++</font> escape link <font color=Cyan>++</font> <font color=Magenta>"</a>"</font>+<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>-></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>"<a name=\"line-"</font> <font color=Cyan>++</font> show line <font color=Cyan>++</font> <font color=Magenta>"\"></a>"</font> <font color=Cyan>++</font> s+<a name="line-62"></a>+<a name="line-63"></a><a name="fontify"></a><font color=Blue>-- 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>"<b>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</b>"</font>+<a name="line-69"></a>font Dim s <font color=Red>=</font> <font color=Magenta>"<em>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</em>"</font>+<a name="line-70"></a>font Underscore s <font color=Red>=</font> <font color=Magenta>"<u>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</u>"</font>+<a name="line-71"></a>font Blink s <font color=Red>=</font> <font color=Magenta>"<blink>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</blink>"</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>"<font color="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>">"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</font>"</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>"<font bgcolor="</font><font color=Cyan>++</font>show c<font color=Cyan>++</font><font color=Magenta>">"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</font>"</font>+<a name="line-76"></a>+<a name="line-77"></a><a name="escape"></a>escape <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>"&lt;"</font><font color=Cyan>++</font>escape cs+<a name="line-78"></a>escape <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>"&gt;"</font><font color=Cyan>++</font>escape cs+<a name="line-79"></a>escape <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>"&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>"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"</font>+<a name="line-85"></a> <font color=Cyan>,</font> <font color=Magenta>"<html>"</font>+<a name="line-86"></a> <font color=Cyan>,</font> <font color=Magenta>"<head>"</font>+<a name="line-87"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>+<a name="line-88"></a> <font color=Cyan>,</font> <font color=Magenta>"<title>"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"</title>"</font>+<a name="line-89"></a> <font color=Cyan>,</font> <font color=Magenta>"</head>"</font>+<a name="line-90"></a> <font color=Cyan>,</font> <font color=Magenta>"<body>"</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</body>\n</html>"</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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></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>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></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>-></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>-></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>-></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 "#$%&~_^\{}</font><font color=Magenta>" which are special--- in LaTeX.-filterSpecial :: String -- ^ The string to filter. - -> String -- ^ The LaTeX-safe string.-filterSpecial ('#':cs) = '\\':'#':(filterSpecial cs)-filterSpecial ('$':cs) = '\\':'$':(filterSpecial cs)-filterSpecial ('%':cs) = '\\':'%':(filterSpecial cs)-filterSpecial ('&':cs) = '\\':'&':(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 ('<':'-':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 ('<':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 ('-':'>':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 ('>':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 -> (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 -> 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>-></font> Bool <font color=Blue>-- ^ Whether output should be partial (= no prologue).</font>+<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-12"></a> <font color=Red>-></font> String <font color=Blue>-- ^ A LaTeX document\/fragment containing the coloured </font>+<a name="line-13"></a> <font color=Blue>-- Haskell source code.</font>+<a name="line-14"></a>hscolour pref partial <font color=Red>=</font>+<a name="line-15"></a> <font color=Cyan>(</font> <u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail<font color=Cyan>)</font>+<a name="line-16"></a> <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font>+<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>-></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>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String+<a name="line-25"></a>renderToken pref <font color=Cyan>(</font>Space<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font> filterSpace text+<a name="line-26"></a>renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>+<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>-></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>-></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>-></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 "#$%&~_^\{}" which are special</font>+<a name="line-44"></a><font color=Blue>-- in LaTeX.</font>+<a name="line-45"></a>filterSpecial <font color=Red>::</font> String <font color=Blue>-- ^ The string to filter. </font>+<a name="line-46"></a> <font color=Red>-></font> String <font color=Blue>-- ^ The LaTeX-safe string.</font>+<a name="line-47"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'#'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'#'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-48"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'$'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'$'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-49"></a>filterSpecial <font color=Cyan>(</font><font color=Magenta>'%'</font><b><font color=Red>:</font></b>cs<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>'\\'</font><b><font color=Red>:</font></b><font color=Magenta>'%'</font><b><font color=Red>:</font></b><font color=Cyan>(</font>filterSpecial cs<font color=Cyan>)</font>+<a name="line-50"></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-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>'<'</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>'<'</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>'>'</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>'>'</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>-></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>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-14"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-15"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise+<a name="line-16"></a>+<a name="line-17"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String+<a name="line-18"></a>renderToken pref <font color=Cyan>(</font>t<font color=Cyan>,</font>s<font color=Cyan>)</font> <font color=Red>=</font> fontify <font color=Cyan>(</font>colourise pref t<font color=Cyan>)</font> s+<a name="line-19"></a>+<a name="line-20"></a>+<a name="line-21"></a><a name="fontify"></a><font color=Blue>-- 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>-></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>-></font> String <font color=Red>-></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>-></font> Bool <font color=Red>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>- <font color=Red>-></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>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></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>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-11"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-12"></a>hscolour pref <font color=Red>=</font> concatMap <font color=Cyan>(</font>renderToken pref<font color=Cyan>)</font> <font color=Cyan>.</font> tokenise+<a name="line-13"></a>+<a name="line-14"></a><a name="renderToken"></a>renderToken <font color=Red>::</font> ColourPrefs <font color=Red>-></font> <font color=Cyan>(</font>TokenType<font color=Cyan>,</font>String<font color=Cyan>)</font> <font color=Red>-></font> String+<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 © Malcolm Wallace 2003-2007. It is distributed+<b>hscolour</b> is © 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>