##// END OF EJS Templates
highlight: fixes garbled text in non-UTF-8 environment...
highlight: fixes garbled text in non-UTF-8 environment This patch treats all files inside repository as encoded by locale's encoding when pygmentize. We can assume that most files are written in locale's encoding, but current implementation treats them as UTF-8. So there's no way to specify the encoding of files. Current implementation, db7557359636 (issue1341): 1. Convert original `text`, which is treated as UTF-8, to locale's encoding. `encoding.tolocal()` is the method to convert from internal UTF-8 to local. If original `text` is not UTF-8, e.g. Japanese EUC-JP, some characters become garbled here. 2. pygmentize, with no UnicodeDecodeError. This patch: 1. Convert original `text`, which is treated as locale's encoding, to unicode. Pygments prefers unicode object than raw str. [1]_ If original `text` is not encoded by locale's encoding, some characters become garbled here. 2. pygmentize, also with no UnicodeDecodeError :) 3. Convert unicode back to raw str, which is encoded by locale's. .. [1] http://pygments.org/docs/unicode/

File last commit:

r9424:799373ff default
r9424:799373ff default
Show More
test-highlight.out
553 lines | 23.7 KiB | text/plain | TextLexer
/ tests / test-highlight.out
Christian Ebert
tests: guess lexer by filename for recent pygments...
r7959 adding isolatin.txt
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 adding primes.py
Dirkjan Ochtman
tests: add highlight extension tests
r6355 % hg serve
Rocco Rutte
highlight: only pygmentize for HTML mimetypes...
r6987 % hgweb filerevision, html
Dirkjan Ochtman
tests: add highlight extension tests
r6355 200 Script output follows
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <head>
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <link rel="icon" href="/static/hgicon.png" type="image/png" />
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <meta name="robots" content="index, nofollow" />
Matt Mackall
hgweb: update tests for paper style...
r7339 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Dirkjan Ochtman
tests: add highlight extension tests
r6355
Isaac Jurado
highlight: Generate pygments style sheet dynamically...
r6485 <link rel="stylesheet" href="/highlightcss" type="text/css" />
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <title>test: 3e1445510fe7 primes.py</title>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </head>
<body>
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="container">
<div class="menu">
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <div class="logo">
Dirkjan Ochtman
change wiki/bts URLs to point to new hostname
r8936 <a href="http://mercurial.selenic.com/">
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <img src="/static/hglogo.png" alt="mercurial" /></a>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </div>
Matt Mackall
hgweb: update tests for paper style...
r7339 <ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/shortlog/3e1445510fe7">log</a></li>
<li><a href="/graph/3e1445510fe7">graph</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 <li><a href="/tags">tags</a></li>
Sune Foldager
paper/coal: add branches page
r8353 <li><a href="/branches">branches</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/rev/3e1445510fe7">changeset</a></li>
<li><a href="/file/3e1445510fe7/">browse</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
<li class="active">file</li>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/diff/3e1445510fe7/primes.py">diff</a></li>
<li><a href="/annotate/3e1445510fe7/primes.py">annotate</a></li>
<li><a href="/log/3e1445510fe7/primes.py">file log</a></li>
<li><a href="/raw-file/3e1445510fe7/primes.py">raw</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
</div>
<div class="main">
<h2><a href="/">test</a></h2>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <h3>view primes.py @ 0:3e1445510fe7</h3>
Matt Mackall
hgweb: update tests for paper style...
r7339
<form class="search" action="/log">
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <p><input name="rev" id="search1" type="text" size="30" /></p>
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
Matt Mackall
hgweb: update tests for paper style...
r7339 </form>
<div class="description">a</div>
<table id="changesetEntry">
<tr>
<th class="author">author</th>
<td class="author">&#116;&#101;&#115;&#116;</td>
</tr>
<tr>
<th class="date">date</th>
Gilles Moris
test-hgweb-*: replace "XX years ago" by a fixed string in get-with-headers.py...
r7544 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
Matt Mackall
hgweb: update tests for paper style...
r7339 </tr>
<tr>
<th class="author">parents</th>
<td class="author"></td>
</tr>
<tr>
<th class="author">children</th>
<td class="author"></td>
</tr>
</table>
<div class="overflow">
Dirkjan Ochtman
tests: fix tests broken by 03b60f2f90bf
r7395 <div class="sourcefirst"> line source</div>
Martin Geisler
coal, paper: add newlines when displaying a file in hgweb...
r8486
<div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
<div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
<div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div>
<div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
<div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
<div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div>
<div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
<div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
<div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></div>
<div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
<div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div>
<div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div>
<div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
<div class="parity1 source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></div>
<div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div>
<div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
<div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
<div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></div>
<div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div>
<div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
<div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
<div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></div>
<div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></div>
<div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
<div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></div>
<div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
<div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
<div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></div>
<div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></div>
<div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div>
<div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div>
<div class="parity1 source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></div>
Dirkjan Ochtman
tests: fix tests broken by 03b60f2f90bf
r7395 <div class="sourcelast"></div>
Matt Mackall
hgweb: update tests for paper style...
r7339 </div>
</div>
</div>
Dirkjan Ochtman
tests: add highlight extension tests
r6355
</body>
</html>
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 % hgweb filerevision, html
200 Script output follows
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 <head>
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <link rel="icon" href="/static/hgicon.png" type="image/png" />
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 <meta name="robots" content="index, nofollow" />
Matt Mackall
hgweb: update tests for paper style...
r7339 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120
<link rel="stylesheet" href="/highlightcss" type="text/css" />
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <title>test: 3e1445510fe7 isolatin.txt</title>
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 </head>
<body>
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="container">
<div class="menu">
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 <div class="logo">
Dirkjan Ochtman
change wiki/bts URLs to point to new hostname
r8936 <a href="http://mercurial.selenic.com/">
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <img src="/static/hglogo.png" alt="mercurial" /></a>
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120 </div>
Matt Mackall
hgweb: update tests for paper style...
r7339 <ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/shortlog/3e1445510fe7">log</a></li>
<li><a href="/graph/3e1445510fe7">graph</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 <li><a href="/tags">tags</a></li>
Sune Foldager
paper/coal: add branches page
r8353 <li><a href="/branches">branches</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/rev/3e1445510fe7">changeset</a></li>
<li><a href="/file/3e1445510fe7/">browse</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
<li class="active">file</li>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/diff/3e1445510fe7/isolatin.txt">diff</a></li>
<li><a href="/annotate/3e1445510fe7/isolatin.txt">annotate</a></li>
<li><a href="/log/3e1445510fe7/isolatin.txt">file log</a></li>
<li><a href="/raw-file/3e1445510fe7/isolatin.txt">raw</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
</div>
<div class="main">
<h2><a href="/">test</a></h2>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <h3>view isolatin.txt @ 0:3e1445510fe7</h3>
Matt Mackall
hgweb: update tests for paper style...
r7339
<form class="search" action="/log">
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <p><input name="rev" id="search1" type="text" size="30" /></p>
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
Matt Mackall
hgweb: update tests for paper style...
r7339 </form>
<div class="description">a</div>
<table id="changesetEntry">
<tr>
<th class="author">author</th>
<td class="author">&#116;&#101;&#115;&#116;</td>
</tr>
<tr>
<th class="date">date</th>
Gilles Moris
test-hgweb-*: replace "XX years ago" by a fixed string in get-with-headers.py...
r7544 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
Matt Mackall
hgweb: update tests for paper style...
r7339 </tr>
<tr>
<th class="author">parents</th>
<td class="author"></td>
</tr>
<tr>
<th class="author">children</th>
<td class="author"></td>
</tr>
</table>
<div class="overflow">
Dirkjan Ochtman
tests: fix tests broken by 03b60f2f90bf
r7395 <div class="sourcefirst"> line source</div>
Martin Geisler
coal, paper: add newlines when displaying a file in hgweb...
r8486
Dirkjan Ochtman
tests: fix tests broken by 03b60f2f90bf
r7395 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> h?bsch</div>
<div class="sourcelast"></div>
Matt Mackall
hgweb: update tests for paper style...
r7339 </div>
</div>
</div>
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120
</body>
</html>
Rocco Rutte
highlight: only pygmentize for HTML mimetypes...
r6987 % hgweb fileannotate, html
Dirkjan Ochtman
tests: add highlight extension tests
r6355 200 Script output follows
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <head>
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <link rel="icon" href="/static/hgicon.png" type="image/png" />
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <meta name="robots" content="index, nofollow" />
Matt Mackall
hgweb: update tests for paper style...
r7339 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Dirkjan Ochtman
tests: add highlight extension tests
r6355
Isaac Jurado
highlight: Generate pygments style sheet dynamically...
r6485 <link rel="stylesheet" href="/highlightcss" type="text/css" />
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <title>test: primes.py annotate</title>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </head>
<body>
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="container">
<div class="menu">
<div class="logo">
Dirkjan Ochtman
change wiki/bts URLs to point to new hostname
r8936 <a href="http://mercurial.selenic.com/">
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <img src="/static/hglogo.png" alt="mercurial" /></a>
Matt Mackall
hgweb: update tests for paper style...
r7339 </div>
<ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/shortlog/3e1445510fe7">log</a></li>
<li><a href="/graph/3e1445510fe7">graph</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 <li><a href="/tags">tags</a></li>
Sune Foldager
paper/coal: add branches page
r8353 <li><a href="/branches">branches</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/rev/3e1445510fe7">changeset</a></li>
<li><a href="/file/3e1445510fe7/">browse</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
<ul>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/file/3e1445510fe7/primes.py">file</a></li>
<li><a href="/diff/3e1445510fe7/primes.py">diff</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 <li class="active">annotate</li>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <li><a href="/log/3e1445510fe7/primes.py">file log</a></li>
<li><a href="/raw-annotate/3e1445510fe7/primes.py">raw</a></li>
Matt Mackall
hgweb: update tests for paper style...
r7339 </ul>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </div>
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="main">
<h2><a href="/">test</a></h2>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <h3>annotate primes.py @ 0:3e1445510fe7</h3>
Dirkjan Ochtman
tests: add highlight extension tests
r6355
Matt Mackall
hgweb: update tests for paper style...
r7339 <form class="search" action="/log">
Dirkjan Ochtman
tests: add highlight extension tests
r6355
Benoit Allard
coal/paper: switch to XHTML 1.1
r7725 <p><input name="rev" id="search1" type="text" size="30" /></p>
<div id="hint">find changesets by author, revision,
files, or words in the commit message</div>
Matt Mackall
hgweb: update tests for paper style...
r7339 </form>
Dirkjan Ochtman
tests: add highlight extension tests
r6355
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="description">a</div>
<table id="changesetEntry">
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <tr>
Matt Mackall
hgweb: update tests for paper style...
r7339 <th class="author">author</th>
<td class="author">&#116;&#101;&#115;&#116;</td>
Matt Mackall
Fix up tests
r6907 </tr>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <tr>
Matt Mackall
hgweb: update tests for paper style...
r7339 <th class="date">date</th>
Gilles Moris
test-hgweb-*: replace "XX years ago" by a fixed string in get-with-headers.py...
r7544 <td class="date">Thu Jan 01 00:00:00 1970 +0000 (many years ago)</td>
Matt Mackall
Fix up tests
r6907 </tr>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 <tr>
Matt Mackall
hgweb: update tests for paper style...
r7339 <th class="author">parents</th>
<td class="author"></td>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </tr>
Matt Mackall
hgweb: update tests for paper style...
r7339 <tr>
<th class="author">children</th>
<td class="author"></td>
</tr>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </table>
Matt Mackall
hgweb: update tests for paper style...
r7339 <div class="overflow">
<table class="bigtable">
<tr>
<th class="annotate">rev</th>
Dirkjan Ochtman
tests: fix tests broken by 03b60f2f90bf
r7395 <th class="line">&nbsp;&nbsp;line source</th>
Matt Mackall
hgweb: update tests for paper style...
r7339 </tr>
Martin Geisler
highlight: updated changed test output...
r8379
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#1"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
<td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
</tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#2"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
<td class="source"><a href="#l2" id="l2"> 2</a> </td>
</tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#3"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#4"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#5"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#6"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#7"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#8"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#9"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#10"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#11"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#12"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#13"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#14"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#15"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#16"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#17"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#18"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#19"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#20"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#21"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#22"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#23"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#24"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#25"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#26"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#27"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#28"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity0">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#29"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
<tr class="parity1">
<td class="annotate">
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <a href="/annotate/3e1445510fe7/primes.py#30"
title="3e1445510fe7: a">test@0</a>
Martin Geisler
highlight: updated changed test output...
r8379 </td>
Martin Geisler
test-highlight: decouple test from get-with-headers.py...
r8485 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
</tr>
<tr class="parity0">
<td class="annotate">
<a href="/annotate/3e1445510fe7/primes.py#31"
title="3e1445510fe7: a">test@0</a>
</td>
<td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
</tr>
<tr class="parity1">
<td class="annotate">
<a href="/annotate/3e1445510fe7/primes.py#32"
title="3e1445510fe7: a">test@0</a>
</td>
<td class="source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
Martin Geisler
highlight: updated changed test output...
r8379 </tr>
Dirkjan Ochtman
tests: add highlight extension tests
r6355 </table>
Matt Mackall
hgweb: update tests for paper style...
r7339 </div>
</div>
</div>
Dirkjan Ochtman
tests: add highlight extension tests
r6355
</body>
</html>
Rocco Rutte
highlight: only pygmentize for HTML mimetypes...
r6987 % hgweb fileannotate, raw
% hgweb filerevision, raw
Isaac Jurado
highlight: Generate pygments style sheet dynamically...
r6485 % hgweb highlightcss friendly
200 Script output follows
/* pygments_style = friendly */
Dirkjan Ochtman
tests: add highlight extension tests
r6355 % errors encountered
Isaac Jurado
highlight: Generate pygments style sheet dynamically...
r6485 % hg serve again
% hgweb highlightcss fruity
200 Script output follows
/* pygments_style = fruity */
% errors encountered
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 adding eucjp.txt
% HGENCODING=euc-jp hg serve
% hgweb filerevision, html
<div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xb5\xfe</div>
% errors encountered
% HGENCODING=utf-8 hg serve
% hgweb filerevision, html
<div class="parity0 source"><a href="#l1" id="l1"> 1</a> \xef\xbf\xbd\xef\xbf\xbd</div>
% errors encountered
% HGENCODING=us-ascii hg serve
% hgweb filerevision, html
<div class="parity0 source"><a href="#l1" id="l1"> 1</a> ??</div>
% errors encountered