Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > c1bd957ced80117102e6148f6fb69aaa > files > 80

ghc-hscolour-devel-1.17-8.fc15.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>Language/Haskell/HsColour/ANSI.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>-- | Partially taken from Hugs AnsiScreen.hs library:</span>
<a name="line-2"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Language</span><span class='hs-varop'>.</span><span class='hs-conid'>Haskell</span><span class='hs-varop'>.</span><span class='hs-conid'>HsColour</span><span class='hs-varop'>.</span><span class='hs-conid'>ANSI</span>
<a name="line-3"></a>  <span class='hs-layout'>(</span> <span class='hs-varid'>highlightOn</span>
<a name="line-4"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>highlightOff</span>
<a name="line-5"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>highlight</span>
<a name="line-6"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>cleareol</span><span class='hs-layout'>,</span> <span class='hs-varid'>clearbol</span><span class='hs-layout'>,</span> <span class='hs-varid'>clearline</span><span class='hs-layout'>,</span> <span class='hs-varid'>clearDown</span><span class='hs-layout'>,</span> <span class='hs-varid'>clearUp</span><span class='hs-layout'>,</span> <span class='hs-varid'>cls</span>
<a name="line-7"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>goto</span>
<a name="line-8"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>cursorUp</span><span class='hs-layout'>,</span> <span class='hs-varid'>cursorDown</span><span class='hs-layout'>,</span> <span class='hs-varid'>cursorLeft</span><span class='hs-layout'>,</span> <span class='hs-varid'>cursorRight</span>
<a name="line-9"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>savePosition</span><span class='hs-layout'>,</span> <span class='hs-varid'>restorePosition</span>
<a name="line-10"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Highlight</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-11"></a>  <span class='hs-layout'>,</span> <span class='hs-conid'>Colour</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-12"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>colourCycle</span>
<a name="line-13"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>enableScrollRegion</span><span class='hs-layout'>,</span> <span class='hs-varid'>scrollUp</span><span class='hs-layout'>,</span> <span class='hs-varid'>scrollDown</span>
<a name="line-14"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>lineWrap</span>
<a name="line-15"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-16"></a>
<a name="line-17"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Language</span><span class='hs-varop'>.</span><span class='hs-conid'>Haskell</span><span class='hs-varop'>.</span><span class='hs-conid'>HsColour</span><span class='hs-varop'>.</span><span class='hs-conid'>ColourHighlight</span>
<a name="line-18"></a>
<a name="line-19"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>List</span> <span class='hs-layout'>(</span><span class='hs-varid'>intersperse</span><span class='hs-layout'>,</span><span class='hs-varid'>isPrefixOf</span><span class='hs-layout'>)</span>
<a name="line-20"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>isDigit</span><span class='hs-layout'>)</span>
<a name="line-21"></a>
<a name="line-22"></a>
<a name="line-23"></a><span class='hs-comment'>-- Basic screen control codes:</span>
<a name="line-24"></a>
<a name="line-25"></a><a name="Pos"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Pos</span>           <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>Int</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-layout'>)</span>
<a name="line-26"></a>
<a name="line-27"></a><a name="at"></a><span class='hs-definition'>at</span>        <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Pos</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-28"></a><a name="goto"></a><span class='hs-comment'>-- | Move the screen cursor to the given position.</span>
<a name="line-29"></a><span class='hs-definition'>goto</span>      <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-30"></a><a name="home"></a><span class='hs-definition'>home</span>      <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-31"></a><a name="cls"></a><span class='hs-comment'>-- | Clear the screen.</span>
<a name="line-32"></a><span class='hs-definition'>cls</span>       <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
<a name="line-33"></a>
<a name="line-34"></a><span class='hs-definition'>at</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span><span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span>  <span class='hs-keyglyph'>=</span> <span class='hs-varid'>goto</span> <span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s</span>
<a name="line-35"></a><span class='hs-definition'>goto</span> <span class='hs-varid'>x</span> <span class='hs-varid'>y</span>    <span class='hs-keyglyph'>=</span> <span class='hs-chr'>'\ESC'</span><span class='hs-conop'>:</span><span class='hs-chr'>'['</span><span class='hs-conop'>:</span><span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>y</span> <span class='hs-varop'>++</span><span class='hs-layout'>(</span><span class='hs-chr'>';'</span><span class='hs-conop'>:</span><span class='hs-varid'>show</span> <span class='hs-varid'>x</span> <span class='hs-varop'>++</span> <span class='hs-str'>"H"</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-36"></a><span class='hs-definition'>home</span>        <span class='hs-keyglyph'>=</span> <span class='hs-varid'>goto</span> <span class='hs-num'>1</span> <span class='hs-num'>1</span>
<a name="line-37"></a>
<a name="line-38"></a><a name="cursorUp"></a><span class='hs-definition'>cursorUp</span>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[A"</span>
<a name="line-39"></a><a name="cursorDown"></a><span class='hs-definition'>cursorDown</span>  <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[B"</span>
<a name="line-40"></a><a name="cursorRight"></a><span class='hs-definition'>cursorRight</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[C"</span>
<a name="line-41"></a><a name="cursorLeft"></a><span class='hs-definition'>cursorLeft</span>  <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[D"</span>
<a name="line-42"></a>
<a name="line-43"></a><a name="cleareol"></a><span class='hs-definition'>cleareol</span>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[K"</span>
<a name="line-44"></a><a name="clearbol"></a><span class='hs-definition'>clearbol</span>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[1K"</span>
<a name="line-45"></a><a name="clearline"></a><span class='hs-definition'>clearline</span>   <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[2K"</span>
<a name="line-46"></a><a name="clearDown"></a><span class='hs-definition'>clearDown</span>   <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[J"</span>
<a name="line-47"></a><a name="clearUp"></a><span class='hs-definition'>clearUp</span>     <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[1J"</span>
<a name="line-48"></a><span class='hs-comment'>-- Choose whichever of the following lines is suitable for your system:</span>
<a name="line-49"></a><span class='hs-definition'>cls</span>         <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[2J"</span>     <span class='hs-comment'>-- for PC with ANSI.SYS</span>
<a name="line-50"></a><span class='hs-comment'>--cls         = "\^L"         -- for Sun window</span>
<a name="line-51"></a>
<a name="line-52"></a><a name="savePosition"></a><span class='hs-definition'>savePosition</span>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC7"</span>
<a name="line-53"></a><a name="restorePosition"></a><span class='hs-definition'>restorePosition</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC8"</span>
<a name="line-54"></a>
<a name="line-55"></a>
<a name="line-56"></a><span class='hs-comment'>-- data Colour    -- imported from ColourHighlight</span>
<a name="line-57"></a><span class='hs-comment'>-- data Highlight -- imported from ColourHighlight</span>
<a name="line-58"></a>
<a name="line-59"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Enum</span> <span class='hs-conid'>Highlight</span> <span class='hs-keyword'>where</span>
<a name="line-60"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Normal</span>       <span class='hs-keyglyph'>=</span> <span class='hs-num'>0</span>
<a name="line-61"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Bold</span>         <span class='hs-keyglyph'>=</span> <span class='hs-num'>1</span>
<a name="line-62"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Dim</span>          <span class='hs-keyglyph'>=</span> <span class='hs-num'>2</span>
<a name="line-63"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Underscore</span>   <span class='hs-keyglyph'>=</span> <span class='hs-num'>4</span>
<a name="line-64"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Blink</span>        <span class='hs-keyglyph'>=</span> <span class='hs-num'>5</span>
<a name="line-65"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>ReverseVideo</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>7</span>
<a name="line-66"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Concealed</span>    <span class='hs-keyglyph'>=</span> <span class='hs-num'>8</span>
<a name="line-67"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-layout'>(</span><span class='hs-conid'>Foreground</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>30</span> <span class='hs-varop'>+</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>c</span>
<a name="line-68"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-layout'>(</span><span class='hs-conid'>Background</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>40</span> <span class='hs-varop'>+</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>c</span>
<a name="line-69"></a>  <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>Italic</span>       <span class='hs-keyglyph'>=</span> <span class='hs-num'>2</span>
<a name="line-70"></a>
<a name="line-71"></a><a name="highlight"></a><span class='hs-comment'>-- | Make the given string appear with all of the listed highlights</span>
<a name="line-72"></a><span class='hs-definition'>highlight</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Highlight</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-73"></a><span class='hs-definition'>highlight</span> <span class='hs-varid'>attrs</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>highlightOn</span> <span class='hs-varid'>attrs</span> <span class='hs-varop'>++</span> <span class='hs-varid'>s</span> <span class='hs-varop'>++</span> <span class='hs-varid'>highlightOff</span>
<a name="line-74"></a>
<a name="line-75"></a><a name="highlightOn"></a><span class='hs-definition'>highlightOn</span> <span class='hs-conid'>[]</span>     <span class='hs-keyglyph'>=</span> <span class='hs-varid'>highlightOn</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Normal</span><span class='hs-keyglyph'>]</span>
<a name="line-76"></a><span class='hs-definition'>highlightOn</span> <span class='hs-varid'>attrs</span>  <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC["</span>
<a name="line-77"></a>                     <span class='hs-varop'>++</span> <span class='hs-varid'>concat</span> <span class='hs-layout'>(</span><span class='hs-varid'>intersperse</span> <span class='hs-str'>";"</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span><span class='hs-varop'>.</span><span class='hs-varid'>fromEnum</span><span class='hs-layout'>)</span> <span class='hs-varid'>attrs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-78"></a>                     <span class='hs-varop'>++</span><span class='hs-str'>"m"</span>
<a name="line-79"></a><a name="highlightOff"></a><span class='hs-definition'>highlightOff</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[0m"</span>
<a name="line-80"></a>
<a name="line-81"></a>
<a name="line-82"></a><a name="colourCycle"></a><span class='hs-comment'>-- | An infinite supply of colours.</span>
<a name="line-83"></a><span class='hs-definition'>colourCycle</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Colour</span><span class='hs-keyglyph'>]</span>
<a name="line-84"></a><span class='hs-definition'>colourCycle</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>cycle</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Red</span><span class='hs-layout'>,</span><span class='hs-conid'>Blue</span><span class='hs-layout'>,</span><span class='hs-conid'>Magenta</span><span class='hs-layout'>,</span><span class='hs-conid'>Green</span><span class='hs-layout'>,</span><span class='hs-conid'>Cyan</span><span class='hs-keyglyph'>]</span>
<a name="line-85"></a>
<a name="line-86"></a>
<a name="line-87"></a><a name="enableScrollRegion"></a><span class='hs-comment'>-- | Scrolling</span>
<a name="line-88"></a><span class='hs-definition'>enableScrollRegion</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-89"></a><span class='hs-definition'>enableScrollRegion</span> <span class='hs-varid'>start</span> <span class='hs-varid'>end</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC["</span><span class='hs-varop'>++</span><span class='hs-varid'>show</span> <span class='hs-varid'>start</span><span class='hs-varop'>++</span><span class='hs-chr'>';'</span><span class='hs-conop'>:</span><span class='hs-varid'>show</span> <span class='hs-varid'>end</span><span class='hs-varop'>++</span><span class='hs-str'>"r"</span>
<a name="line-90"></a>
<a name="line-91"></a><a name="scrollDown"></a><span class='hs-definition'>scrollDown</span>  <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESCD"</span>
<a name="line-92"></a><a name="scrollUp"></a><span class='hs-definition'>scrollUp</span>    <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESCM"</span>
<a name="line-93"></a>
<a name="line-94"></a><a name="lineWrap"></a><span class='hs-comment'>-- Line-wrapping mode</span>
<a name="line-95"></a><span class='hs-definition'>lineWrap</span> <span class='hs-conid'>True</span>  <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[7h"</span>
<a name="line-96"></a><span class='hs-definition'>lineWrap</span> <span class='hs-conid'>False</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\ESC[7l"</span>
<a name="line-97"></a>
</pre></body>
</html>