hscolour 1.14 → 1.15
raw patch · 20 files changed
+609/−489 lines, 20 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.Haskell.HsColour.CSS: top'n'tail :: String -> String -> String
+ Language.Haskell.HsColour.HTML: top'n'tail :: String -> String -> String
+ Language.Haskell.HsColour.InlineCSS: top'n'tail :: String -> String -> String
+ Language.Haskell.HsColour.LaTeX: top'n'tail :: String -> String -> String
- Language.Haskell.HsColour.CSS: hscolour :: Bool -> Bool -> String -> String -> String
+ Language.Haskell.HsColour.CSS: hscolour :: Bool -> String -> String
- Language.Haskell.HsColour.HTML: hscolour :: ColourPrefs -> Bool -> Bool -> String -> String -> String
+ Language.Haskell.HsColour.HTML: hscolour :: ColourPrefs -> Bool -> String -> String
- Language.Haskell.HsColour.InlineCSS: hscolour :: ColourPrefs -> Bool -> Bool -> String -> String -> String
+ Language.Haskell.HsColour.InlineCSS: hscolour :: ColourPrefs -> Bool -> String -> String
- Language.Haskell.HsColour.LaTeX: hscolour :: ColourPrefs -> Bool -> String -> String
+ Language.Haskell.HsColour.LaTeX: hscolour :: ColourPrefs -> String -> String
Files
- HsColour.hs +1/−1
- Language/Haskell/HsColour.hs +24/−12
- Language/Haskell/HsColour/CSS.hs +3/−7
- Language/Haskell/HsColour/HTML.hs +6/−7
- Language/Haskell/HsColour/InlineCSS.hs +3/−7
- Language/Haskell/HsColour/LaTeX.hs +8/−9
- Makefile +1/−1
- README +10/−8
- docs/hscolour/Language-Haskell-HsColour-CSS.html +33/−16
- docs/hscolour/Language-Haskell-HsColour-HTML.html +33/−15
- docs/hscolour/Language-Haskell-HsColour-InlineCSS.html +33/−16
- docs/hscolour/Language-Haskell-HsColour-LaTeX.html +33/−8
- docs/hscolour/Language/Haskell/HsColour.html +66/−54
- docs/hscolour/Language/Haskell/HsColour/CSS.html +60/−64
- docs/hscolour/Language/Haskell/HsColour/HTML.html +87/−88
- docs/hscolour/Language/Haskell/HsColour/InlineCSS.html +64/−68
- docs/hscolour/Language/Haskell/HsColour/LaTeX.html +101/−102
- docs/hscolour/doc-index-T.html +36/−0
- hscolour.cabal +1/−1
- index.html +6/−5
HsColour.hs view
@@ -10,7 +10,7 @@ import List (intersperse, isSuffixOf) import Debug.Trace -version = "1.14"+version = "1.15" optionTable :: [(String,Option)] optionTable = [ ("help", Help)
Language/Haskell/HsColour.hs view
@@ -38,27 +38,39 @@ -> String -- ^ Haskell source code. -> String -- ^ Coloured Haskell source code. hscolour output pref anchor partial title False =- hscolour' output pref anchor partial title+ (if partial then id else top'n'tail output title) .+ hscolour' output pref anchor hscolour output pref anchor partial title True =+ (if partial then id else top'n'tail output title) . concatMap chunk . joinL . classify . inlines where- chunk (Code c) = hscolour' output pref anchor True title c+ chunk (Code c) = hscolour' output pref anchor c chunk (Lit c) = c +-- | The actual colourising worker, despatched on the chosen output format. hscolour' :: Output -- ^ Output format. -> 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 anch partial top = HTML.hscolour pref anch partial top-hscolour' CSS _ anch partial top = CSS.hscolour anch partial top-hscolour' ICSS pref anch partial top = ICSS.hscolour pref anch partial top+hscolour' TTY pref _ = TTY.hscolour pref+hscolour' MIRC pref _ = MIRC.hscolour pref+hscolour' LaTeX pref _ = LaTeX.hscolour pref+hscolour' HTML pref anchor = HTML.hscolour pref anchor+hscolour' CSS _ anchor = CSS.hscolour anchor+hscolour' ICSS pref anchor = ICSS.hscolour pref anchor +-- | Choose the right headers\/footers, depending on the output format.+top'n'tail :: Output -- ^ Output format+ -> String -- ^ Title for output+ -> (String->String) -- ^ Output transformer+top'n'tail TTY _ = id+top'n'tail MIRC _ = id+top'n'tail LaTeX title = LaTeX.top'n'tail title+top'n'tail HTML title = HTML.top'n'tail title+top'n'tail CSS title = CSS.top'n'tail title+top'n'tail ICSS title = ICSS.top'n'tail title+ -- | Separating literate files into code\/comment chunks. data Lit = Code {unL :: String} | Lit {unL :: String} deriving (Show) @@ -75,7 +87,7 @@ lines' (c:s) acc = lines' s (acc . (c:)) --- The code for classify is largely stolen from Language.Preprocessor.Unlit.+-- | The code for classify is largely stolen from Language.Preprocessor.Unlit. classify [] = [] classify (x:xs) | "\\begin{code}"`isPrefixOf`x = Lit x: allProg xs@@ -87,7 +99,7 @@ classify (('>':x):xs) = Code ('>':x) : classify xs classify (x:xs) = Lit x: classify xs --- Join up chunks of code/comment that are next to each other.+-- | Join up chunks of code\/comment that are next to each other. joinL :: [Lit] -> [Lit] joinL [] = [] joinL (Code c:Code c2:xs) = joinL (Code (c++c2):xs)
Language/Haskell/HsColour/CSS.hs view
@@ -1,5 +1,5 @@ -- | Formats Haskell source code as HTML with CSS.-module Language.Haskell.HsColour.CSS (hscolour) where+module Language.Haskell.HsColour.CSS (hscolour,top'n'tail) where import Language.Haskell.HsColour.Anchors import Language.Haskell.HsColour.Classify as Classify@@ -8,15 +8,11 @@ -- | Formats Haskell source code as a complete HTML document with CSS. 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 title =- (if partial then id else top'n'tail title)- . pre+hscolour anchor =+ pre . (if anchor then renderNewLinesAnchors . concatMap (renderAnchors renderToken)
Language/Haskell/HsColour/HTML.hs view
@@ -1,8 +1,10 @@ -- | Formats Haskell source code using HTML with font tags. module Language.Haskell.HsColour.HTML - (hscolour, + ( hscolour+ , top'n'tail -- * Internals- renderAnchors, renderComment, renderNewLinesAnchors, escape) where+ , renderAnchors, renderComment, renderNewLinesAnchors, escape+ ) where import Language.Haskell.HsColour.Anchors import Language.Haskell.HsColour.Classify as Classify@@ -14,13 +16,10 @@ -- | Formats Haskell source code using HTML with font tags. 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 title = - (if partial then id else top'n'tail title)- . pre+hscolour pref anchor = + pre . (if anchor then renderNewLinesAnchors . concatMap (renderAnchors (renderToken pref)) . insertAnchors
Language/Haskell/HsColour/InlineCSS.hs view
@@ -1,5 +1,5 @@ -- | Formats Haskell source code as HTML with inline CSS.-module Language.Haskell.HsColour.InlineCSS (hscolour) where+module Language.Haskell.HsColour.InlineCSS (hscolour,top'n'tail) where import Language.Haskell.HsColour.Anchors import Language.Haskell.HsColour.Classify as Classify@@ -10,15 +10,11 @@ -- | Formats Haskell source code as a complete HTML document with inline styling hscolour :: ColourPrefs -- ^ Preferences for styling. -> Bool -- ^ Whether to include anchors.- -> Bool -- ^ Whether output should be partial- -- (= no document headers will be included.)- -> String -- ^ Title for HTML page. -> String -- ^ Haskell source code. -> String -- ^ An HTML document containing the coloured -- Haskell source code.-hscolour prefs anchor partial title =- (if partial then id else top'n'tail title)- . pre+hscolour prefs anchor =+ pre . (if anchor then renderNewLinesAnchors . concatMap (renderAnchors (renderToken prefs))
Language/Haskell/HsColour/LaTeX.hs view
@@ -1,5 +1,5 @@ -- | Formats Haskell source code using LaTeX macros.-module Language.Haskell.HsColour.LaTeX (hscolour) where+module Language.Haskell.HsColour.LaTeX (hscolour, top'n'tail) where import Language.Haskell.HsColour.Classify as Classify import Language.Haskell.HsColour.Colourise@@ -7,17 +7,13 @@ -- | Formats Haskell source code as a complete LaTeX document. hscolour :: ColourPrefs -- ^ Colour preferences.- -> Bool -- ^ Whether output should be partial (= no prologue). -> String -- ^ Haskell source code. -> String -- ^ A LaTeX document\/fragment containing the coloured -- Haskell source code.-hscolour pref partial =- ( if partial then id else top'n'tail)- . concatMap (renderToken pref)- . tokenise+hscolour pref = concatMap (renderToken pref) . tokenise -top'n'tail :: String -> String-top'n'tail = (latexPrefix++) . (++latexSuffix)+top'n'tail :: String -> String -> String+top'n'tail title = (latexPrefix title++) . (++latexSuffix) -- | Wrap each lexeme in the appropriate LaTeX macro. -- TODO: filter dangerous characters like "{}_$"@@ -88,7 +84,7 @@ latexColour White = "white" -- | Generic LaTeX document preamble.-latexPrefix = unlines+latexPrefix title = unlines ["\\documentclass[a4paper, 12pt]{article}" ,"\\usepackage[usenames]{color}" ,"\\usepackage{hyperref}"@@ -99,7 +95,10 @@ ,"\\newcommand{\\hsspace}{\\usebox{\\spaceb}}" ,"\\newcommand{\\hstab}{\\usebox{\\tabb}}" ,"\\newcommand{\\conceal}[1]{}"+ ,"\\title{"++title++"}"+ ,"%% Generated by HsColour" ,"\\begin{document}"+ ,"\\maketitle" ,"\\noindent" ]
Makefile view
@@ -1,5 +1,5 @@ LIBRARY = hscolour-VERSION = 1.14+VERSION = 1.15 DIRS = Language/Haskell/HsColour
README view
@@ -30,15 +30,17 @@ classes). This enables you to make links to a specific location in the generated file with the standard "file.html#anchor" notation. -If you want to embed several individually colourised fragments into a-larger document, then use the <tt>-partial</tt> option , to omit the-HTML DOCTYPE header, CSS stylesheet link, or LaTeX prologue.+If an input file is literate, that is, it has a suffix ".lhs" or ".ly"+or ".lx", then only the code fragments will be colourised, leaving the+commentary untouched. You can explicitly override this+filename-guessing of literate status: use the -lit option to+force literate colouring, or -nolit to force all text to be+colourised. (-lit-tex is an obsolete synonym for -lit) -Alternatively, if you have a literate input source (e.g. .lhs file),-then the -lit option passes the literate parts untouched,-and colourises only the code fragments as if each was called-individually with -partial. The option -lit-tex is identical: it is-retained for backwards-compatibility only.+For more advanced usage, if you are building documents in parts, and you+want to embed several individually colourised fragments into a larger+document, use the <tt>-partial</tt> option with each fragment, to omit+the HTML DOCTYPE header, CSS stylesheet link, or LaTeX prologue. You can configure the colours for different lexical entities by editing a configuration file called .hscolour in the current directory.
docs/hscolour/Language-Haskell-HsColour-CSS.html view
@@ -90,8 +90,18 @@ ><TD CLASS="decl" ><A HREF="#v%3Ahscolour" >hscolour</A-> :: Bool -> Bool -> String -> String -> String</TD+> :: Bool -> String -> String</TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atop%27n%27tail"+>top'n'tail</A+> :: String -> String -> String</TD+></TR ></TABLE ></TD ></TR@@ -137,23 +147,8 @@ ></TR ><TR ><TD CLASS="arg"->-> Bool</TD-><TD CLASS="rdoc"->Whether output should be partial- (= no stylesheet link will be included.)-</TD-></TR-><TR-><TD CLASS="arg" >-> String</TD ><TD CLASS="rdoc"->Title for HTML page.-</TD-></TR-><TR-><TD CLASS="arg"->-> String</TD-><TD CLASS="rdoc" >Haskell source code. </TD ></TR@@ -169,6 +164,28 @@ ><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%3Atop%27n%27tail"+></A+><B+>top'n'tail</B+> :: String -> String -> String</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/CSS.html#top%27n%27tail"+>Source</A+></TD ></TR ></TABLE ></TD
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 -> Bool -> String -> String -> String</TD+> -> Bool -> String -> String</TD ></TR ><TR ><TD CLASS="s8"@@ -117,6 +117,16 @@ ></TR ><TR ><TD CLASS="decl"+><A HREF="#v%3Atop%27n%27tail"+>top'n'tail</A+> :: String -> String -> String</TD+></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl" ><A HREF="#v%3ArenderAnchors" >renderAnchors</A > :: ((<A HREF="Language-Haskell-HsColour-Classify.html#t%3ATokenType"@@ -199,22 +209,8 @@ ></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@@ -229,6 +225,28 @@ ><TD CLASS="ndoc" COLSPAN="2" >Formats Haskell source code using HTML with font tags. </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%3Atop%27n%27tail"+></A+><B+>top'n'tail</B+> :: String -> String -> String</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/HTML.html#top%27n%27tail"+>Source</A+></TD ></TR ></TABLE ></TD
docs/hscolour/Language-Haskell-HsColour-InlineCSS.html view
@@ -92,8 +92,18 @@ >hscolour</A > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs" >ColourPrefs</A-> -> Bool -> Bool -> String -> String -> String</TD+> -> Bool -> String -> String</TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atop%27n%27tail"+>top'n'tail</A+> :: String -> String -> String</TD+></TR ></TABLE ></TD ></TR@@ -148,23 +158,8 @@ ></TR ><TR ><TD CLASS="arg"->-> Bool</TD-><TD CLASS="rdoc"->Whether output should be partial- (= no document headers will be included.)-</TD-></TR-><TR-><TD CLASS="arg" >-> String</TD ><TD CLASS="rdoc"->Title for HTML page.-</TD-></TR-><TR-><TD CLASS="arg"->-> String</TD-><TD CLASS="rdoc" >Haskell source code. </TD ></TR@@ -180,6 +175,28 @@ ><TD CLASS="ndoc" COLSPAN="2" >Formats Haskell source code as a complete HTML document with inline styling </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%3Atop%27n%27tail"+></A+><B+>top'n'tail</B+> :: String -> String -> String</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/InlineCSS.html#top%27n%27tail"+>Source</A+></TD ></TR ></TABLE ></TD
docs/hscolour/Language-Haskell-HsColour-LaTeX.html view
@@ -92,8 +92,18 @@ >hscolour</A > :: <A HREF="Language-Haskell-HsColour-Colourise.html#t%3AColourPrefs" >ColourPrefs</A-> -> Bool -> String -> String</TD+> -> String -> String</TD ></TR+><TR+><TD CLASS="s8"+></TD+></TR+><TR+><TD CLASS="decl"+><A HREF="#v%3Atop%27n%27tail"+>top'n'tail</A+> :: String -> String -> String</TD+></TR ></TABLE ></TD ></TR@@ -141,13 +151,6 @@ ></TR ><TR ><TD CLASS="arg"->-> Bool</TD-><TD CLASS="rdoc"->Whether output should be partial (= no prologue).-</TD-></TR-><TR-><TD CLASS="arg" >-> String</TD ><TD CLASS="rdoc" >Haskell source code.@@ -165,6 +168,28 @@ ><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%3Atop%27n%27tail"+></A+><B+>top'n'tail</B+> :: String -> String -> String</TD+><TD CLASS="declbut"+><A HREF="Language/Haskell/HsColour/LaTeX.html#top%27n%27tail"+>Source</A+></TD ></TR ></TABLE ></TD
docs/hscolour/Language/Haskell/HsColour.html view
@@ -45,62 +45,74 @@ <a name="line-38"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font> <a name="line-39"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font> <a name="line-40"></a>hscolour output pref anchor partial title False <font color=Red>=</font>-<a name="line-41"></a> hscolour' output pref anchor partial title-<a name="line-42"></a>hscolour output pref anchor partial title True <font color=Red>=</font>-<a name="line-43"></a> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> classify <font color=Cyan>.</font> inlines-<a name="line-44"></a> <u><font color=Green>where</font></u>-<a name="line-45"></a> chunk <font color=Cyan>(</font>Code c<font color=Cyan>)</font> <font color=Red>=</font> hscolour' output pref anchor True title c-<a name="line-46"></a> chunk <font color=Cyan>(</font>Lit c<font color=Cyan>)</font> <font color=Red>=</font> c-<a name="line-47"></a>-<a name="line-48"></a><a name="hscolour'"></a>hscolour' <font color=Red>::</font> Output <font color=Blue>-- ^ Output format.</font>-<a name="line-49"></a> <font color=Red>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them)</font>-<a name="line-50"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>-<a name="line-51"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output document is partial or complete.</font>-<a name="line-52"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output.</font>-<a name="line-53"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>-<a name="line-54"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>-<a name="line-55"></a>hscolour' TTY pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref-<a name="line-56"></a>hscolour' MIRC pref <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <u><font color=Green>_</font></u> <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref-<a name="line-57"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u> partial <u><font color=Green>_</font></u> <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref partial-<a name="line-58"></a>hscolour' HTML pref anch partial top <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anch partial top-<a name="line-59"></a>hscolour' CSS <u><font color=Green>_</font></u> anch partial top <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anch partial top-<a name="line-60"></a>hscolour' ICSS pref anch partial top <font color=Red>=</font> ICSS<font color=Cyan>.</font>hscolour pref anch partial top-<a name="line-61"></a>-<a name="line-62"></a><a name="Lit"></a><font color=Blue>-- | Separating literate files into code\/comment chunks.</font>-<a name="line-63"></a><a name="Lit"></a><u><font color=Green>data</font></u> Lit <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Lit <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Show<font color=Cyan>)</font>-<a name="line-64"></a>-<a name="line-65"></a><a name="inlines"></a><font color=Blue>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</font>-<a name="line-66"></a><font color=Blue>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</font>-<a name="line-67"></a><font color=Blue>-- And retains the trailing '\n' character in each resultant string.</font>-<a name="line-68"></a>inlines <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font>-<a name="line-69"></a>inlines s <font color=Red>=</font> lines' s id-<a name="line-70"></a> <u><font color=Green>where</font></u>-<a name="line-71"></a> lines' [] acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>-<a name="line-72"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\^M'</font><b><font color=Red>:</font></b><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue>-- DOS</font>-<a name="line-73"></a><font color=Blue>--lines' ('\^M':s) acc = acc ['\n'] : lines' s id -- MacOS</font>-<a name="line-74"></a> lines' <font color=Cyan>(</font><font color=Magenta>'\n'</font><b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> acc <font color=Red>[</font><font color=Magenta>'\n'</font><font color=Red>]</font> <b><font color=Red>:</font></b> lines' s id <font color=Blue>-- Unix</font>-<a name="line-75"></a> lines' <font color=Cyan>(</font>c<b><font color=Red>:</font></b>s<font color=Cyan>)</font> acc <font color=Red>=</font> lines' s <font color=Cyan>(</font>acc <font color=Cyan>.</font> <font color=Cyan>(</font>c<b><font color=Red>:</font></b><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-41"></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 output title<font color=Cyan>)</font> <font color=Cyan>.</font>+<a name="line-42"></a> hscolour' output pref anchor+<a name="line-43"></a>hscolour output pref anchor partial title True <font color=Red>=</font>+<a name="line-44"></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 output title<font color=Cyan>)</font> <font color=Cyan>.</font>+<a name="line-45"></a> concatMap chunk <font color=Cyan>.</font> joinL <font color=Cyan>.</font> classify <font color=Cyan>.</font> inlines+<a name="line-46"></a> <u><font color=Green>where</font></u>+<a name="line-47"></a> chunk <font color=Cyan>(</font>Code c<font color=Cyan>)</font> <font color=Red>=</font> hscolour' output pref anchor c+<a name="line-48"></a> chunk <font color=Cyan>(</font>Lit c<font color=Cyan>)</font> <font color=Red>=</font> c+<a name="line-49"></a>+<a name="line-50"></a><a name="hscolour'"></a><font color=Blue>-- | The actual colourising worker, despatched on the chosen output format.</font>+<a name="line-51"></a>hscolour' <font color=Red>::</font> Output <font color=Blue>-- ^ Output format.</font>+<a name="line-52"></a> <font color=Red>-></font> ColourPrefs <font color=Blue>-- ^ Colour preferences (for formats that support them)</font>+<a name="line-53"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>+<a name="line-54"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>+<a name="line-55"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Coloured Haskell source code.</font>+<a name="line-56"></a>hscolour' TTY pref <u><font color=Green>_</font></u> <font color=Red>=</font> TTY<font color=Cyan>.</font>hscolour pref+<a name="line-57"></a>hscolour' MIRC pref <u><font color=Green>_</font></u> <font color=Red>=</font> MIRC<font color=Cyan>.</font>hscolour pref+<a name="line-58"></a>hscolour' LaTeX pref <u><font color=Green>_</font></u> <font color=Red>=</font> LaTeX<font color=Cyan>.</font>hscolour pref+<a name="line-59"></a>hscolour' HTML pref anchor <font color=Red>=</font> HTML<font color=Cyan>.</font>hscolour pref anchor+<a name="line-60"></a>hscolour' CSS <u><font color=Green>_</font></u> anchor <font color=Red>=</font> CSS<font color=Cyan>.</font>hscolour anchor+<a name="line-61"></a>hscolour' ICSS pref anchor <font color=Red>=</font> ICSS<font color=Cyan>.</font>hscolour pref anchor+<a name="line-62"></a>+<a name="line-63"></a><a name="top'n'tail"></a><font color=Blue>-- | Choose the right headers\/footers, depending on the output format.</font>+<a name="line-64"></a>top'n'tail <font color=Red>::</font> Output <font color=Blue>-- ^ Output format</font>+<a name="line-65"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for output</font>+<a name="line-66"></a> <font color=Red>-></font> <font color=Cyan>(</font>String<font color=Red>-></font>String<font color=Cyan>)</font> <font color=Blue>-- ^ Output transformer</font>+<a name="line-67"></a>top'n'tail TTY <u><font color=Green>_</font></u> <font color=Red>=</font> id+<a name="line-68"></a>top'n'tail MIRC <u><font color=Green>_</font></u> <font color=Red>=</font> id+<a name="line-69"></a>top'n'tail LaTeX title <font color=Red>=</font> LaTeX<font color=Cyan>.</font>top'n'tail title+<a name="line-70"></a>top'n'tail HTML title <font color=Red>=</font> HTML<font color=Cyan>.</font>top'n'tail title+<a name="line-71"></a>top'n'tail CSS title <font color=Red>=</font> CSS<font color=Cyan>.</font>top'n'tail title+<a name="line-72"></a>top'n'tail ICSS title <font color=Red>=</font> ICSS<font color=Cyan>.</font>top'n'tail title+<a name="line-73"></a>+<a name="line-74"></a><a name="Lit"></a><font color=Blue>-- | Separating literate files into code\/comment chunks.</font>+<a name="line-75"></a><a name="Lit"></a><u><font color=Green>data</font></u> Lit <font color=Red>=</font> Code <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <font color=Red>|</font> Lit <font color=Cyan>{</font>unL <font color=Red>::</font> String<font color=Cyan>}</font> <u><font color=Green>deriving</font></u> <font color=Cyan>(</font>Show<font color=Cyan>)</font> <a name="line-76"></a>-<a name="line-77"></a>-<a name="line-78"></a><a name="classify"></a><font color=Blue>-- The code for classify is largely stolen from Language.Preprocessor.Unlit.</font>-<a name="line-79"></a>classify [] <font color=Red>=</font> []-<a name="line-80"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\begin{code}"</font><font color=Cyan>`isPrefixOf`</font>x-<a name="line-81"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> allProg xs-<a name="line-82"></a> <u><font color=Green>where</font></u> allProg [] <font color=Red>=</font> [] <font color=Blue>-- Should give an error message,</font>-<a name="line-83"></a> <font color=Blue>-- but I have no good position information.</font>-<a name="line-84"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\end{code}"</font><font color=Cyan>`isPrefixOf`</font>x-<a name="line-85"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs-<a name="line-86"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code x<b><font color=Red>:</font></b> allProg xs-<a name="line-87"></a>classify <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font> <b><font color=Red>:</font></b> classify xs-<a name="line-88"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs+<a name="line-77"></a><a name="inlines"></a><font color=Blue>-- Re-implementation of 'lines', for better efficiency (but decreased laziness).</font>+<a name="line-78"></a><font color=Blue>-- Also, importantly, accepts non-standard DOS and Mac line ending characters.</font>+<a name="line-79"></a><font color=Blue>-- And retains the trailing '\n' character in each resultant string.</font>+<a name="line-80"></a>inlines <font color=Red>::</font> String <font color=Red>-></font> <font color=Red>[</font>String<font color=Red>]</font>+<a name="line-81"></a>inlines s <font color=Red>=</font> lines' s id+<a name="line-82"></a> <u><font color=Green>where</font></u>+<a name="line-83"></a> lines' [] acc <font color=Red>=</font> <font color=Red>[</font>acc []<font color=Red>]</font>+<a name="line-84"></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-85"></a><font color=Blue>--lines' ('\^M':s) acc = acc ['\n'] : lines' s id -- MacOS</font>+<a name="line-86"></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-87"></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-88"></a> <a name="line-89"></a>-<a name="line-90"></a><a name="joinL"></a><font color=Blue>-- Join up chunks of code/comment that are next to each other.</font>-<a name="line-91"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Lit<font color=Red>]</font> <font color=Red>-></font> <font color=Red>[</font>Lit<font color=Red>]</font>-<a name="line-92"></a>joinL [] <font color=Red>=</font> []-<a name="line-93"></a>joinL <font color=Cyan>(</font>Code c<b><font color=Red>:</font></b>Code c2<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Code <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>-<a name="line-94"></a>joinL <font color=Cyan>(</font>Lit c <b><font color=Red>:</font></b>Lit c2 <b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Lit <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>-<a name="line-95"></a>joinL <font color=Cyan>(</font>any<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> any<b><font color=Red>:</font></b> joinL xs-<a name="line-96"></a>+<a name="line-90"></a><a name="classify"></a><font color=Blue>-- | The code for classify is largely stolen from Language.Preprocessor.Unlit.</font>+<a name="line-91"></a>classify [] <font color=Red>=</font> []+<a name="line-92"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\begin{code}"</font><font color=Cyan>`isPrefixOf`</font>x+<a name="line-93"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> allProg xs+<a name="line-94"></a> <u><font color=Green>where</font></u> allProg [] <font color=Red>=</font> [] <font color=Blue>-- Should give an error message,</font>+<a name="line-95"></a> <font color=Blue>-- but I have no good position information.</font>+<a name="line-96"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>|</font> <font color=Magenta>"\\end{code}"</font><font color=Cyan>`isPrefixOf`</font>x+<a name="line-97"></a> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs+<a name="line-98"></a> allProg <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code x<b><font color=Red>:</font></b> allProg xs+<a name="line-99"></a>classify <font color=Cyan>(</font><font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Code <font color=Cyan>(</font><font color=Magenta>'>'</font><b><font color=Red>:</font></b>x<font color=Cyan>)</font> <b><font color=Red>:</font></b> classify xs+<a name="line-100"></a>classify <font color=Cyan>(</font>x<b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> Lit x<b><font color=Red>:</font></b> classify xs+<a name="line-101"></a>+<a name="line-102"></a><a name="joinL"></a><font color=Blue>-- | Join up chunks of code\/comment that are next to each other.</font>+<a name="line-103"></a>joinL <font color=Red>::</font> <font color=Red>[</font>Lit<font color=Red>]</font> <font color=Red>-></font> <font color=Red>[</font>Lit<font color=Red>]</font>+<a name="line-104"></a>joinL [] <font color=Red>=</font> []+<a name="line-105"></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-106"></a>joinL <font color=Cyan>(</font>Lit c <b><font color=Red>:</font></b>Lit c2 <b><font color=Red>:</font></b>xs<font color=Cyan>)</font> <font color=Red>=</font> joinL <font color=Cyan>(</font>Lit <font color=Cyan>(</font>c<font color=Cyan>++</font>c2<font color=Cyan>)</font><b><font color=Red>:</font></b>xs<font color=Cyan>)</font>+<a name="line-107"></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-108"></a> </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/CSS.html view
@@ -6,7 +6,7 @@ </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-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>top'n'tail<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@@ -15,69 +15,65 @@ <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>"hs-keyword"</font>-<a name="line-43"></a>cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"hs-keyglyph"</font>-<a name="line-44"></a>cssClass Layout <font color=Red>=</font> <font color=Magenta>"hs-layout"</font>-<a name="line-45"></a>cssClass Comment <font color=Red>=</font> <font color=Magenta>"hs-comment"</font>-<a name="line-46"></a>cssClass Conid <font color=Red>=</font> <font color=Magenta>"hs-conid"</font>-<a name="line-47"></a>cssClass Varid <font color=Red>=</font> <font color=Magenta>"hs-varid"</font>-<a name="line-48"></a>cssClass Conop <font color=Red>=</font> <font color=Magenta>"hs-conop"</font>-<a name="line-49"></a>cssClass Varop <font color=Red>=</font> <font color=Magenta>"hs-varop"</font>-<a name="line-50"></a>cssClass String <font color=Red>=</font> <font color=Magenta>"hs-str"</font>-<a name="line-51"></a>cssClass Char <font color=Red>=</font> <font color=Magenta>"hs-chr"</font>-<a name="line-52"></a>cssClass Number <font color=Red>=</font> <font color=Magenta>"hs-num"</font>-<a name="line-53"></a>cssClass Cpp <font color=Red>=</font> <font color=Magenta>"hs-cpp"</font>-<a name="line-54"></a>cssClass Error <font color=Red>=</font> <font color=Magenta>"hs-sel"</font>-<a name="line-55"></a>cssClass Definition <font color=Red>=</font> <font color=Magenta>"hs-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>+<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>-- ^ An HTML document containing the coloured </font>+<a name="line-13"></a> <font color=Blue>-- Haskell source code.</font>+<a name="line-14"></a>hscolour anchor <font color=Red>=</font>+<a name="line-15"></a> pre+<a name="line-16"></a> <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor +<a name="line-17"></a> <u><font color=Green>then</font></u> renderNewLinesAnchors+<a name="line-18"></a> <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors renderToken<font color=Cyan>)</font>+<a name="line-19"></a> <font color=Cyan>.</font> insertAnchors+<a name="line-20"></a> <u><font color=Green>else</font></u> concatMap renderToken<font color=Cyan>)</font>+<a name="line-21"></a> <font color=Cyan>.</font> tokenise+<a name="line-22"></a>+<a name="line-23"></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-24"></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-25"></a>+<a name="line-26"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-27"></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-28"></a>+<a name="line-29"></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-30"></a>renderToken <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-31"></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-32"></a> <u><font color=Green>where</font></u>+<a name="line-33"></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-34"></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-35"></a> cls2 <font color=Red>=</font> cssClass cls+<a name="line-36"></a>+<a name="line-37"></a>+<a name="line-38"></a><a name="cssClass"></a>cssClass Keyword <font color=Red>=</font> <font color=Magenta>"hs-keyword"</font>+<a name="line-39"></a>cssClass Keyglyph <font color=Red>=</font> <font color=Magenta>"hs-keyglyph"</font>+<a name="line-40"></a>cssClass Layout <font color=Red>=</font> <font color=Magenta>"hs-layout"</font>+<a name="line-41"></a>cssClass Comment <font color=Red>=</font> <font color=Magenta>"hs-comment"</font>+<a name="line-42"></a>cssClass Conid <font color=Red>=</font> <font color=Magenta>"hs-conid"</font>+<a name="line-43"></a>cssClass Varid <font color=Red>=</font> <font color=Magenta>"hs-varid"</font>+<a name="line-44"></a>cssClass Conop <font color=Red>=</font> <font color=Magenta>"hs-conop"</font>+<a name="line-45"></a>cssClass Varop <font color=Red>=</font> <font color=Magenta>"hs-varop"</font>+<a name="line-46"></a>cssClass String <font color=Red>=</font> <font color=Magenta>"hs-str"</font>+<a name="line-47"></a>cssClass Char <font color=Red>=</font> <font color=Magenta>"hs-chr"</font>+<a name="line-48"></a>cssClass Number <font color=Red>=</font> <font color=Magenta>"hs-num"</font>+<a name="line-49"></a>cssClass Cpp <font color=Red>=</font> <font color=Magenta>"hs-cpp"</font>+<a name="line-50"></a>cssClass Error <font color=Red>=</font> <font color=Magenta>"hs-sel"</font>+<a name="line-51"></a>cssClass Definition <font color=Red>=</font> <font color=Magenta>"hs-definition"</font>+<a name="line-52"></a>cssClass <u><font color=Green>_</font></u> <font color=Red>=</font> <font color=Magenta>""</font>+<a name="line-53"></a>+<a name="line-54"></a>+<a name="line-55"></a><a name="cssPrefix"></a>cssPrefix title <font color=Red>=</font> unlines+<a name="line-56"></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-57"></a> <font color=Cyan>,</font><font color=Magenta>"<html>"</font>+<a name="line-58"></a> <font color=Cyan>,</font><font color=Magenta>"<head>"</font>+<a name="line-59"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>+<a name="line-60"></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-61"></a> <font color=Cyan>,</font><font color=Magenta>"<link type='text/css' rel='stylesheet' href='hscolour.css' />"</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>"<body>"</font>+<a name="line-64"></a> <font color=Red>]</font>+<a name="line-65"></a> +<a name="line-66"></a><a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines+<a name="line-67"></a> <font color=Red>[</font><font color=Magenta>"</body>"</font>+<a name="line-68"></a> <font color=Cyan>,</font><font color=Magenta>"</html>"</font>+<a name="line-69"></a> <font color=Red>]</font> </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/HTML.html view
@@ -7,97 +7,96 @@ <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-3"></a> <font color=Cyan>(</font> hscolour+<a name="line-4"></a> <font color=Cyan>,</font> top'n'tail+<a name="line-5"></a> <font color=Blue>-- * Internals</font>+<a name="line-6"></a> <font color=Cyan>,</font> renderAnchors<font color=Cyan>,</font> renderComment<font color=Cyan>,</font> renderNewLinesAnchors<font color=Cyan>,</font> escape+<a name="line-7"></a> <font color=Cyan>)</font> <u><font color=Green>where</font></u>+<a name="line-8"></a>+<a name="line-9"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Anchors+<a name="line-10"></a><u><font color=Green>import</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>Classify <u><font color=Green>as</font></u> Classify+<a name="line-11"></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-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-13"></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-14"></a>+<a name="line-15"></a>+<a name="line-16"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code using HTML with font tags.</font>+<a name="line-17"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Colour preferences.</font>+<a name="line-18"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</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>font Italic s <font color=Red>=</font> <font color=Magenta>"<i>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</i>"</font>-<a name="line-77"></a>-<a name="line-78"></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-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>"&gt;"</font><font color=Cyan>++</font>escape cs-<a name="line-80"></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-81"></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-82"></a>escape [] <font color=Red>=</font> []-<a name="line-83"></a>-<a name="line-84"></a><a name="htmlHeader"></a>htmlHeader title <font color=Red>=</font> unlines-<a name="line-85"></a> <font color=Red>[</font> <font color=Magenta>"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"</font>-<a name="line-86"></a> <font color=Cyan>,</font> <font color=Magenta>"<html>"</font>-<a name="line-87"></a> <font color=Cyan>,</font> <font color=Magenta>"<head>"</font>-<a name="line-88"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>-<a name="line-89"></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-90"></a> <font color=Cyan>,</font> <font color=Magenta>"</head>"</font>-<a name="line-91"></a> <font color=Cyan>,</font> <font color=Magenta>"<body>"</font>-<a name="line-92"></a> <font color=Red>]</font>-<a name="line-93"></a><a name="htmlClose"></a>htmlClose <font color=Red>=</font> <font color=Magenta>"\n</body>\n</html>"</font>+<a name="line-21"></a>hscolour pref anchor <font color=Red>=</font> +<a name="line-22"></a> pre+<a name="line-23"></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-24"></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-25"></a> <font color=Cyan>.</font> insertAnchors+<a name="line-26"></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-27"></a> <font color=Cyan>.</font> tokenise+<a name="line-28"></a>+<a name="line-29"></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-30"></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-31"></a>+<a name="line-32"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-33"></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-34"></a>+<a name="line-35"></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-36"></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-37"></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-38"></a>+<a name="line-39"></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-40"></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-41"></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-42"></a>renderAnchors render <font color=Cyan>(</font>Right r<font color=Cyan>)</font> <font color=Red>=</font> render r+<a name="line-43"></a>+<a name="line-44"></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-45"></a><font color=Blue>-- hyperlinks</font>+<a name="line-46"></a>renderComment <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-47"></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-48"></a> renderLink a <font color=Cyan>++</font> renderComment b+<a name="line-49"></a> <u><font color=Green>where</font></u>+<a name="line-50"></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-51"></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-52"></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-53"></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-54"></a> +<a name="line-55"></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-56"></a>renderComment [] <font color=Red>=</font> []+<a name="line-57"></a>+<a name="line-58"></a><a name="renderNewLinesAnchors"></a>renderNewLinesAnchors <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-59"></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-60"></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-61"></a>+<a name="line-62"></a><a name="fontify"></a><font color=Blue>-- Html stuff</font>+<a name="line-63"></a>fontify [] s <font color=Red>=</font> s+<a name="line-64"></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-65"></a>+<a name="line-66"></a><a name="font"></a>font Normal s <font color=Red>=</font> s+<a name="line-67"></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-68"></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-69"></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-70"></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-71"></a>font ReverseVideo s <font color=Red>=</font> s+<a name="line-72"></a>font Concealed s <font color=Red>=</font> s+<a name="line-73"></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-74"></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-75"></a>font Italic s <font color=Red>=</font> <font color=Magenta>"<i>"</font><font color=Cyan>++</font>s<font color=Cyan>++</font><font color=Magenta>"</i>"</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/InlineCSS.html view
@@ -6,7 +6,7 @@ </head> <body> <pre><a name="line-1"></a><font color=Blue>-- | Formats Haskell source code as HTML with inline CSS.</font>-<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>InlineCSS <font color=Cyan>(</font>hscolour<font color=Cyan>)</font> <u><font color=Green>where</font></u>+<a name="line-2"></a><u><font color=Green>module</font></u> Language<font color=Cyan>.</font>Haskell<font color=Cyan>.</font>HsColour<font color=Cyan>.</font>InlineCSS <font color=Cyan>(</font>hscolour<font color=Cyan>,</font>top'n'tail<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@@ -17,74 +17,70 @@ <a name="line-10"></a><a name="hscolour"></a><font color=Blue>-- | Formats Haskell source code as a complete HTML document with inline styling</font> <a name="line-11"></a>hscolour <font color=Red>::</font> ColourPrefs <font color=Blue>-- ^ Preferences for styling.</font> <a name="line-12"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether to include anchors.</font>-<a name="line-13"></a> <font color=Red>-></font> Bool <font color=Blue>-- ^ Whether output should be partial</font>-<a name="line-14"></a> <font color=Blue>-- (= no document headers will be included.)</font>-<a name="line-15"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Title for HTML page.</font>-<a name="line-16"></a> <font color=Red>-></font> String <font color=Blue>-- ^ Haskell source code.</font>-<a name="line-17"></a> <font color=Red>-></font> String <font color=Blue>-- ^ An HTML document containing the coloured </font>-<a name="line-18"></a> <font color=Blue>-- Haskell source code.</font>-<a name="line-19"></a>hscolour prefs anchor partial title <font color=Red>=</font>-<a name="line-20"></a> <font color=Cyan>(</font><u><font color=Green>if</font></u> partial <u><font color=Green>then</font></u> id <u><font color=Green>else</font></u> top'n'tail title<font color=Cyan>)</font>-<a name="line-21"></a> <font color=Cyan>.</font> pre-<a name="line-22"></a> <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor -<a name="line-23"></a> <u><font color=Green>then</font></u> renderNewLinesAnchors-<a name="line-24"></a> <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken prefs<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-25"></a> <font color=Cyan>.</font> insertAnchors-<a name="line-26"></a> <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken prefs<font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-27"></a> <font color=Cyan>.</font> tokenise-<a name="line-28"></a>-<a name="line-29"></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-30"></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-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>-- ^ An HTML document containing the coloured </font>+<a name="line-15"></a> <font color=Blue>-- Haskell source code.</font>+<a name="line-16"></a>hscolour prefs anchor <font color=Red>=</font>+<a name="line-17"></a> pre+<a name="line-18"></a> <font color=Cyan>.</font> <font color=Cyan>(</font><u><font color=Green>if</font></u> anchor +<a name="line-19"></a> <u><font color=Green>then</font></u> renderNewLinesAnchors+<a name="line-20"></a> <font color=Cyan>.</font> concatMap <font color=Cyan>(</font>renderAnchors <font color=Cyan>(</font>renderToken prefs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-21"></a> <font color=Cyan>.</font> insertAnchors+<a name="line-22"></a> <u><font color=Green>else</font></u> concatMap <font color=Cyan>(</font>renderToken prefs<font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-23"></a> <font color=Cyan>.</font> tokenise+<a name="line-24"></a>+<a name="line-25"></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-26"></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-27"></a>+<a name="line-28"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-></font> String+<a name="line-29"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre style=\"font-family:Consolas, Monaco, Monospace;\">"</font><font color=Cyan>++</font><font color=Cyan>)</font>+<a name="line-30"></a> <font color=Cyan>.</font> <font color=Cyan>(</font><font color=Cyan>++</font><font color=Magenta>"</pre>"</font><font color=Cyan>)</font> <a name="line-31"></a>-<a name="line-32"></a><a name="pre"></a>pre <font color=Red>::</font> String <font color=Red>-></font> String-<a name="line-33"></a>pre <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"<pre style=\"font-family:Consolas, Monaco, Monospace;\">"</font><font color=Cyan>++</font><font color=Cyan>)</font>-<a name="line-34"></a> <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 prefs <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-38"></a> stylise <font color=Cyan>(</font>colourise prefs cls<font color=Cyan>)</font> <font color=Cyan>$</font>-<a name="line-39"></a> <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-<a name="line-40"></a>-<a name="line-41"></a><a name="stylise"></a>stylise <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-42"></a>stylise hs s <font color=Red>=</font> <font color=Magenta>"<span style=\""</font> <font color=Cyan>++</font> concatMap style hs <font color=Cyan>++</font> <font color=Magenta>"\">"</font> <font color=Cyan>++</font>s<font color=Cyan>++</font> <font color=Magenta>"</span>"</font>-<a name="line-43"></a>-<a name="line-44"></a><a name="cssPrefix"></a>cssPrefix title <font color=Red>=</font> unlines-<a name="line-45"></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-46"></a> <font color=Cyan>,</font><font color=Magenta>"<html>"</font>-<a name="line-47"></a> <font color=Cyan>,</font><font color=Magenta>"<head>"</font>-<a name="line-48"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>-<a name="line-49"></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-50"></a> <font color=Cyan>,</font><font color=Magenta>"</head>"</font>-<a name="line-51"></a> <font color=Cyan>,</font><font color=Magenta>"<body style=\"background-color: #131313; color: #ffffff;\">"</font>-<a name="line-52"></a> <font color=Red>]</font>-<a name="line-53"></a> -<a name="line-54"></a><a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines-<a name="line-55"></a> <font color=Red>[</font><font color=Magenta>"</body>"</font>-<a name="line-56"></a> <font color=Cyan>,</font><font color=Magenta>"</html>"</font>-<a name="line-57"></a> <font color=Red>]</font>-<a name="line-58"></a>-<a name="line-59"></a><a name="style"></a>style <font color=Red>::</font> Highlight <font color=Red>-></font> String-<a name="line-60"></a>style Normal <font color=Red>=</font> <font color=Magenta>""</font>-<a name="line-61"></a>style Bold <font color=Red>=</font> <font color=Magenta>"font-weight: bold;"</font>-<a name="line-62"></a>style Dim <font color=Red>=</font> <font color=Magenta>"font-weight: lighter;"</font>-<a name="line-63"></a>style Underscore <font color=Red>=</font> <font color=Magenta>"text-decoration: underline;"</font>-<a name="line-64"></a>style Blink <font color=Red>=</font> <font color=Magenta>"text-decoration: blink;"</font>-<a name="line-65"></a>style ReverseVideo <font color=Red>=</font> <font color=Magenta>""</font>-<a name="line-66"></a>style Concealed <font color=Red>=</font> <font color=Magenta>"text-decoration: line-through;"</font>-<a name="line-67"></a>style <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"color: "</font><font color=Cyan>++</font>csscolour c<font color=Cyan>++</font><font color=Magenta>";"</font>-<a name="line-68"></a>style <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"background-colour: "</font><font color=Cyan>++</font>csscolour c<font color=Cyan>++</font><font color=Magenta>";"</font>-<a name="line-69"></a>style Italic <font color=Red>=</font> <font color=Magenta>"font-style: italic;"</font>-<a name="line-70"></a>-<a name="line-71"></a><a name="csscolour"></a>csscolour <font color=Red>::</font> Colour <font color=Red>-></font> String-<a name="line-72"></a>csscolour Black <font color=Red>=</font> <font color=Magenta>"#000000"</font>-<a name="line-73"></a>csscolour Red <font color=Red>=</font> <font color=Magenta>"#ff0000"</font>-<a name="line-74"></a>csscolour Green <font color=Red>=</font> <font color=Magenta>"#00ff00"</font>-<a name="line-75"></a>csscolour Yellow <font color=Red>=</font> <font color=Magenta>"#ffff00"</font>-<a name="line-76"></a>csscolour Blue <font color=Red>=</font> <font color=Magenta>"#0000ff"</font>-<a name="line-77"></a>csscolour Magenta <font color=Red>=</font> <font color=Magenta>"#ff00ff"</font>-<a name="line-78"></a>csscolour Cyan <font color=Red>=</font> <font color=Magenta>"#00ffff"</font>-<a name="line-79"></a>csscolour White <font color=Red>=</font> <font color=Magenta>"#ffffff"</font>-<a name="line-80"></a>+<a name="line-32"></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-33"></a>renderToken prefs <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-34"></a> stylise <font color=Cyan>(</font>colourise prefs cls<font color=Cyan>)</font> <font color=Cyan>$</font>+<a name="line-35"></a> <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+<a name="line-36"></a>+<a name="line-37"></a><a name="stylise"></a>stylise <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-38"></a>stylise hs s <font color=Red>=</font> <font color=Magenta>"<span style=\""</font> <font color=Cyan>++</font> concatMap style hs <font color=Cyan>++</font> <font color=Magenta>"\">"</font> <font color=Cyan>++</font>s<font color=Cyan>++</font> <font color=Magenta>"</span>"</font>+<a name="line-39"></a>+<a name="line-40"></a><a name="cssPrefix"></a>cssPrefix title <font color=Red>=</font> unlines+<a name="line-41"></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-42"></a> <font color=Cyan>,</font><font color=Magenta>"<html>"</font>+<a name="line-43"></a> <font color=Cyan>,</font><font color=Magenta>"<head>"</font>+<a name="line-44"></a> <font color=Cyan>,</font><font color=Magenta>"<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->"</font>+<a name="line-45"></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-46"></a> <font color=Cyan>,</font><font color=Magenta>"</head>"</font>+<a name="line-47"></a> <font color=Cyan>,</font><font color=Magenta>"<body style=\"background-color: #131313; color: #ffffff;\">"</font>+<a name="line-48"></a> <font color=Red>]</font>+<a name="line-49"></a> +<a name="line-50"></a><a name="cssSuffix"></a>cssSuffix <font color=Red>=</font> unlines+<a name="line-51"></a> <font color=Red>[</font><font color=Magenta>"</body>"</font>+<a name="line-52"></a> <font color=Cyan>,</font><font color=Magenta>"</html>"</font>+<a name="line-53"></a> <font color=Red>]</font>+<a name="line-54"></a>+<a name="line-55"></a><a name="style"></a>style <font color=Red>::</font> Highlight <font color=Red>-></font> String+<a name="line-56"></a>style Normal <font color=Red>=</font> <font color=Magenta>""</font>+<a name="line-57"></a>style Bold <font color=Red>=</font> <font color=Magenta>"font-weight: bold;"</font>+<a name="line-58"></a>style Dim <font color=Red>=</font> <font color=Magenta>"font-weight: lighter;"</font>+<a name="line-59"></a>style Underscore <font color=Red>=</font> <font color=Magenta>"text-decoration: underline;"</font>+<a name="line-60"></a>style Blink <font color=Red>=</font> <font color=Magenta>"text-decoration: blink;"</font>+<a name="line-61"></a>style ReverseVideo <font color=Red>=</font> <font color=Magenta>""</font>+<a name="line-62"></a>style Concealed <font color=Red>=</font> <font color=Magenta>"text-decoration: line-through;"</font>+<a name="line-63"></a>style <font color=Cyan>(</font>Foreground c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"color: "</font><font color=Cyan>++</font>csscolour c<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="line-64"></a>style <font color=Cyan>(</font>Background c<font color=Cyan>)</font> <font color=Red>=</font> <font color=Magenta>"background-colour: "</font><font color=Cyan>++</font>csscolour c<font color=Cyan>++</font><font color=Magenta>";"</font>+<a name="line-65"></a>style Italic <font color=Red>=</font> <font color=Magenta>"font-style: italic;"</font>+<a name="line-66"></a>+<a name="line-67"></a><a name="csscolour"></a>csscolour <font color=Red>::</font> Colour <font color=Red>-></font> String+<a name="line-68"></a>csscolour Black <font color=Red>=</font> <font color=Magenta>"#000000"</font>+<a name="line-69"></a>csscolour Red <font color=Red>=</font> <font color=Magenta>"#ff0000"</font>+<a name="line-70"></a>csscolour Green <font color=Red>=</font> <font color=Magenta>"#00ff00"</font>+<a name="line-71"></a>csscolour Yellow <font color=Red>=</font> <font color=Magenta>"#ffff00"</font>+<a name="line-72"></a>csscolour Blue <font color=Red>=</font> <font color=Magenta>"#0000ff"</font>+<a name="line-73"></a>csscolour Magenta <font color=Red>=</font> <font color=Magenta>"#ff00ff"</font>+<a name="line-74"></a>csscolour Cyan <font color=Red>=</font> <font color=Magenta>"#00ffff"</font>+<a name="line-75"></a>csscolour White <font color=Red>=</font> <font color=Magenta>"#ffffff"</font>+<a name="line-76"></a> </pre> </body> </html>
docs/hscolour/Language/Haskell/HsColour/LaTeX.html view
@@ -6,7 +6,7 @@ </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-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> top'n'tail<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@@ -14,107 +14,106 @@ <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>latexHighlight Italic <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\it{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>-<a name="line-78"></a>-<a name="line-79"></a><a name="latexColour"></a><font color=Blue>-- | Translate a 'Colour' into a LaTeX colour name.</font>-<a name="line-80"></a>latexColour <font color=Red>::</font> Colour <font color=Red>-></font> String-<a name="line-81"></a>latexColour Black <font color=Red>=</font> <font color=Magenta>"black"</font>-<a name="line-82"></a>latexColour Red <font color=Red>=</font> <font color=Magenta>"red"</font>-<a name="line-83"></a>latexColour Green <font color=Red>=</font> <font color=Magenta>"green"</font>-<a name="line-84"></a>latexColour Yellow <font color=Red>=</font> <font color=Magenta>"yellow"</font>-<a name="line-85"></a>latexColour Blue <font color=Red>=</font> <font color=Magenta>"blue"</font>-<a name="line-86"></a>latexColour Magenta <font color=Red>=</font> <font color=Magenta>"magenta"</font>-<a name="line-87"></a>latexColour Cyan <font color=Red>=</font> <font color=Magenta>"cyan"</font>-<a name="line-88"></a>latexColour White <font color=Red>=</font> <font color=Magenta>"white"</font>-<a name="line-89"></a>-<a name="line-90"></a><a name="latexPrefix"></a><font color=Blue>-- | Generic LaTeX document preamble.</font>-<a name="line-91"></a>latexPrefix <font color=Red>=</font> unlines-<a name="line-92"></a> <font color=Red>[</font><font color=Magenta>"\\documentclass[a4paper, 12pt]{article}"</font>-<a name="line-93"></a> <font color=Cyan>,</font><font color=Magenta>"\\usepackage[usenames]{color}"</font>-<a name="line-94"></a> <font color=Cyan>,</font><font color=Magenta>"\\usepackage{hyperref}"</font>-<a name="line-95"></a> <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\spaceb}"</font>-<a name="line-96"></a> <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\tabb}"</font>-<a name="line-97"></a> <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\spaceb}[1ex]{~}"</font>-<a name="line-98"></a> <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\tabb}[4ex]{~}"</font>-<a name="line-99"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hsspace}{\\usebox{\\spaceb}}"</font>-<a name="line-100"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hstab}{\\usebox{\\tabb}}"</font>-<a name="line-101"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\conceal}[1]{}"</font>-<a name="line-102"></a> <font color=Cyan>,</font><font color=Magenta>"\\begin{document}"</font>-<a name="line-103"></a> <font color=Cyan>,</font><font color=Magenta>"\\noindent"</font>-<a name="line-104"></a> <font color=Red>]</font>-<a name="line-105"></a>-<a name="line-106"></a><a name="latexSuffix"></a><font color=Blue>-- | Generic LaTeX document postamble.</font>-<a name="line-107"></a>latexSuffix <font color=Red>=</font> unlines-<a name="line-108"></a> <font color=Red>[</font><font color=Magenta>""</font>-<a name="line-109"></a> <font color=Cyan>,</font><font color=Magenta>"\\end{document}"</font>-<a name="line-110"></a> <font color=Red>]</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>-- ^ A LaTeX document\/fragment containing the coloured </font>+<a name="line-12"></a> <font color=Blue>-- Haskell source code.</font>+<a name="line-13"></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-14"></a>+<a name="line-15"></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-16"></a>top'n'tail title <font color=Red>=</font> <font color=Cyan>(</font>latexPrefix title<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-17"></a>+<a name="line-18"></a><a name="renderToken"></a><font color=Blue>-- | Wrap each lexeme in the appropriate LaTeX macro.</font>+<a name="line-19"></a><font color=Blue>-- TODO: filter dangerous characters like "{}_$"</font>+<a name="line-20"></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-21"></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-22"></a>renderToken pref <font color=Cyan>(</font>cls<font color=Cyan>,</font>text<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-23"></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-24"></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-25"></a> <u><font color=Green>_</font></u> <font color=Red>-></font> text+<a name="line-26"></a> style <font color=Red>=</font> colourise pref cls+<a name="line-27"></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-28"></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-29"></a>+<a name="line-30"></a><a name="filterSpace"></a><font color=Blue>-- | Filter white space characters.</font>+<a name="line-31"></a>filterSpace <font color=Red>::</font> String+<a name="line-32"></a> <font color=Red>-></font> String+<a name="line-33"></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-34"></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-35"></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-36"></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-37"></a>filterSpace [] <font color=Red>=</font> []+<a name="line-38"></a>+<a name="line-39"></a><a name="filterSpecial"></a><font color=Blue>-- | Filters the characters "#$%&~_^\{}" which are special</font>+<a name="line-40"></a><font color=Blue>-- in LaTeX.</font>+<a name="line-41"></a>filterSpecial <font color=Red>::</font> String <font color=Blue>-- ^ The string to filter. </font>+<a name="line-42"></a> <font color=Red>-></font> String <font color=Blue>-- ^ The LaTeX-safe string.</font>+<a name="line-43"></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-44"></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-45"></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-46"></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-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>"\\tilde{ }"</font><font color=Cyan>++</font><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>"\\ensuremath{\\hat{ }}"</font><font color=Cyan>++</font><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>"$\\backslash$"</font><font color=Cyan>++</font><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>'\\'</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-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{|}"</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><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-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>"\\ensuremath{\\langle}"</font><font color=Cyan>++</font><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><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-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{\\rangle}"</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>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-59"></a>filterSpecial [] <font color=Red>=</font> []+<a name="line-60"></a>+<a name="line-61"></a>+<a name="line-62"></a><a name="latexHighlight"></a><font color=Blue>-- | Constructs the appropriate LaTeX macro for the given style.</font>+<a name="line-63"></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-64"></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-65"></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-66"></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-67"></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-68"></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-69"></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-70"></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-71"></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-72"></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-73"></a>latexHighlight Italic <font color=Red>=</font> <font color=Cyan>(</font><font color=Magenta>"{\\it{}"</font><font color=Cyan>,</font> <font color=Magenta>"}"</font><font color=Cyan>)</font>+<a name="line-74"></a>+<a name="line-75"></a><a name="latexColour"></a><font color=Blue>-- | Translate a 'Colour' into a LaTeX colour name.</font>+<a name="line-76"></a>latexColour <font color=Red>::</font> Colour <font color=Red>-></font> String+<a name="line-77"></a>latexColour Black <font color=Red>=</font> <font color=Magenta>"black"</font>+<a name="line-78"></a>latexColour Red <font color=Red>=</font> <font color=Magenta>"red"</font>+<a name="line-79"></a>latexColour Green <font color=Red>=</font> <font color=Magenta>"green"</font>+<a name="line-80"></a>latexColour Yellow <font color=Red>=</font> <font color=Magenta>"yellow"</font>+<a name="line-81"></a>latexColour Blue <font color=Red>=</font> <font color=Magenta>"blue"</font>+<a name="line-82"></a>latexColour Magenta <font color=Red>=</font> <font color=Magenta>"magenta"</font>+<a name="line-83"></a>latexColour Cyan <font color=Red>=</font> <font color=Magenta>"cyan"</font>+<a name="line-84"></a>latexColour White <font color=Red>=</font> <font color=Magenta>"white"</font>+<a name="line-85"></a>+<a name="line-86"></a><a name="latexPrefix"></a><font color=Blue>-- | Generic LaTeX document preamble.</font>+<a name="line-87"></a>latexPrefix title <font color=Red>=</font> unlines+<a name="line-88"></a> <font color=Red>[</font><font color=Magenta>"\\documentclass[a4paper, 12pt]{article}"</font>+<a name="line-89"></a> <font color=Cyan>,</font><font color=Magenta>"\\usepackage[usenames]{color}"</font>+<a name="line-90"></a> <font color=Cyan>,</font><font color=Magenta>"\\usepackage{hyperref}"</font>+<a name="line-91"></a> <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\spaceb}"</font>+<a name="line-92"></a> <font color=Cyan>,</font><font color=Magenta>"\\newsavebox{\\tabb}"</font>+<a name="line-93"></a> <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\spaceb}[1ex]{~}"</font>+<a name="line-94"></a> <font color=Cyan>,</font><font color=Magenta>"\\savebox{\\tabb}[4ex]{~}"</font>+<a name="line-95"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hsspace}{\\usebox{\\spaceb}}"</font>+<a name="line-96"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\hstab}{\\usebox{\\tabb}}"</font>+<a name="line-97"></a> <font color=Cyan>,</font><font color=Magenta>"\\newcommand{\\conceal}[1]{}"</font>+<a name="line-98"></a> <font color=Cyan>,</font><font color=Magenta>"\\title{"</font><font color=Cyan>++</font>title<font color=Cyan>++</font><font color=Magenta>"}"</font>+<a name="line-99"></a> <font color=Cyan>,</font><font color=Magenta>"%% Generated by HsColour"</font>+<a name="line-100"></a> <font color=Cyan>,</font><font color=Magenta>"\\begin{document}"</font>+<a name="line-101"></a> <font color=Cyan>,</font><font color=Magenta>"\\maketitle"</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/doc-index-T.html view
@@ -161,6 +161,42 @@ >Language.Haskell.HsColour.Classify</A ></TD ></TR+><TR+><TD CLASS="indexentry" COLSPAN="2"+>top'n'tail</TD+></TR+><TR+><TD CLASS="indexannot"+>1 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-CSS.html#v%3Atop%27n%27tail"+>Language.Haskell.HsColour.CSS</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>2 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-HTML.html#v%3Atop%27n%27tail"+>Language.Haskell.HsColour.HTML</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>3 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-InlineCSS.html#v%3Atop%27n%27tail"+>Language.Haskell.HsColour.InlineCSS</A+></TD+></TR+><TR+><TD CLASS="indexannot"+>4 (Function)</TD+><TD CLASS="indexlinks"+><A HREF="Language-Haskell-HsColour-LaTeX.html#v%3Atop%27n%27tail"+>Language.Haskell.HsColour.LaTeX</A+></TD+></TR ></TABLE ></TD ></TR
hscolour.cabal view
@@ -1,5 +1,5 @@ Name: hscolour-Version: 1.14+Version: 1.15 Copyright: 2003-2009 Malcolm Wallace, University of York; 2006 Bjorn Bringert Maintainer: Malcolm Wallace Author: Malcolm Wallace
index.html view
@@ -36,10 +36,10 @@ <li> Download a tarfile package from: <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/"> ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/</a>- <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.tar.gz">- http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.tar.gz</a>- <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.zip">- http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.14.zip</a>+ <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.15.tar.gz">+ http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.15.tar.gz</a>+ <a href="http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.15.zip">+ http://www.cs.york.ac.uk/fp/darcs/hscolour/hscolour-1.15.zip</a> <li> Or use the <a href="http://darcs.net/">darcs</a> repository at<br> <tt>darcs get http://www.cs.york.ac.uk/fp/darcs/hscolour</tt> <li> Sources and history are browsable on-line through@@ -200,6 +200,7 @@ <h2>History</h2> <p> <dl>+<dt>1.15</dt><dd> makes -nopartial the default for literate files</dd> <dt>1.14</dt><dd> merges the -lit and -lit-tex options, adds -lit guessing, and permits multiple input files</dd> <dt>1.13</dt><dd> added the new -icss output format, and italic highlights</dd>@@ -224,7 +225,7 @@ </dl> <p>-This page last modified: 21st August 2009<br>+This page last modified: 24th August 2009<br> Malcolm Wallace<br> </td></tr></table>