##// END OF EJS Templates
highlight: produce correct markup when there's a blank line just before EOF...
highlight: produce correct markup when there's a blank line just before EOF Due to how the colorized output from pygments was stripped of <pre> elements, when there was an empty line at the end of a file, highlight extension produced an incorrect markup (no closing tags from the fileline/annotateline template). It wasn't usually noticeable, because browsers were smart enough to see where the missing tags should've been, but in monoblue style it resulted in the last line having twice the normal height. Instead of awkwardly trying to strip outer <pre></pre> tags, let's make the formatter with nowrap=True, which should do what we need in pygments since at least 0.5 (2006-10-30). Example from monoblue style: Before: <div class="source"> <div style="font-family:monospace" class="parity0"> <pre><a class="linenr" href="#l1" id="l1"> 1</a> </pre> </div> <div style="font-family:monospace" class="parity1"> <pre><a class="linenr" href="#l2" id="l2"> 2</a> </div> Now: <div class="source"> <div style="font-family:monospace" class="parity0"> <pre><a class="linenr" href="#l1" id="l1"> 1</a> </pre> </div> <div style="font-family:monospace" class="parity1"> <pre><a class="linenr" href="#l2" id="l2"> 2</a> </pre> </div> </div> (Notice the missing </pre></div> now in place)

File last commit:

r25867:a74e9806 stable
r25867:a74e9806 stable
Show More
test-highlight.t
625 lines | 25.4 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require pygments serve
Matt Mackall
tests: unify test-highlight
r12445
$ cat <<EOF >> $HGRCPATH
> [extensions]
> highlight =
> [web]
> pygments_style = friendly
> EOF
$ hg init test
$ cd test
create random Python file to exercise Pygments
$ cat <<EOF > primes.py
> #!/usr/bin/env python
>
> """Fun with generators. Corresponding Haskell implementation:
>
> primes = 2 : sieve [3, 5..]
> where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
> """
>
> from itertools import dropwhile, ifilter, islice, count, chain
>
> def primes():
> """Generate all primes."""
> def sieve(ns):
> p = ns.next()
> # It is important to yield *here* in order to stop the
> # infinite recursion.
> yield p
> ns = ifilter(lambda n: n % p != 0, ns)
> for n in sieve(ns):
> yield n
>
> odds = ifilter(lambda i: i % 2 == 1, count())
> return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
>
> if __name__ == "__main__":
> import sys
> try:
> n = int(sys.argv[1])
> except (ValueError, IndexError):
> n = 10
> p = primes()
> print "The first %d primes: %s" % (n, list(islice(p, n)))
> EOF
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 $ echo >> primes.py # to test html markup with an empty line just before EOF
Matt Mackall
tests: unify test-highlight
r12445 $ hg ci -Ama
adding primes.py
hg serve
$ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
$ cat hg.pid >> $DAEMON_PIDS
hgweb filerevision, html
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py') \
Matt Mackall
tests: unify test-highlight
r12445 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
200 Script output follows
<!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">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Benoit Boissinot
fix broken tests...
r14053 <script type="text/javascript" src="/static/mercurial.js"></script>
Matt Mackall
tests: unify test-highlight
r12445
<link rel="stylesheet" href="/highlightcss" type="text/css" />
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <title>test: 06824edf55d0 primes.py</title>
Matt Mackall
tests: unify test-highlight
r12445 </head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
<a href="http://mercurial.selenic.com/">
<img src="/static/hglogo.png" alt="mercurial" /></a>
</div>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/shortlog/tip">log</a></li>
<li><a href="/graph/tip">graph</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li><a href="/tags">tags</a></li>
FUJIWARA Katsunori
hgweb: fix lack of "bookmarks" link in "/file" page of "paper" style...
r21120 <li><a href="/bookmarks">bookmarks</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li><a href="/branches">branches</a></li>
</ul>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/rev/tip">changeset</a></li>
<li><a href="/file/tip/">browse</a></li>
Matt Mackall
tests: unify test-highlight
r12445 </ul>
<ul>
<li class="active">file</li>
<li><a href="/file/tip/primes.py">latest</a></li>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/diff/tip/primes.py">diff</a></li>
<li><a href="/comparison/tip/primes.py">comparison</a></li>
<li><a href="/annotate/tip/primes.py">annotate</a></li>
<li><a href="/log/tip/primes.py">file log</a></li>
<li><a href="/raw-file/tip/primes.py">raw</a></li>
Matt Mackall
tests: unify test-highlight
r12445 </ul>
Augie Fackler
hgweb: add help link to templates missed in ead4e21f49f1
r12680 <ul>
<li><a href="/help">help</a></li>
</ul>
Matt Mackall
tests: unify test-highlight
r12445 </div>
<div class="main">
Matt Mackall
tests: fix up test-highlight for breadcrumb changes
r18291 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 <h3>
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 view primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 <span class="tag">tip</span>
</h3>
Matt Mackall
tests: unify test-highlight
r12445
<form class="search" action="/log">
<p><input name="rev" id="search1" type="text" size="30" /></p>
Alexander Plavin
paper: edit search hint to include new feature description
r19796 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
Matt Mackall
tests: unify test-highlight
r12445 </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>
Brodie Rao
hgweb: fix dynamic date calculation not working under Safari...
r15375 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
Matt Mackall
tests: unify test-highlight
r12445 </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">
Alexander Plavin
hgweb: add line wrapping switch to file source view...
r19430 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div>
Matt Mackall
tests: unify test-highlight
r12445 <div class="sourcefirst"> line source</div>
Alexander Plavin
hgweb: introduce separate classes for stripey background...
r19431 <pre class="sourcelines stripes4 wrap">
Alexander Plavin
hgweb: code selection without line numbers in file source view...
r19387 <span id="l1"><span class="c">#!/usr/bin/env python</span></span><a href="#l1"></a>
<span id="l2"></span><a href="#l2"></a>
<span id="l3"><span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></span><a href="#l3"></a>
<span id="l4"></span><a href="#l4"></a>
<span id="l5"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l5"></a>
<span id="l6"><span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></span><a href="#l6"></a>
<span id="l7"><span class="sd">&quot;&quot;&quot;</span></span><a href="#l7"></a>
<span id="l8"></span><a href="#l8"></a>
<span id="l9"><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></span><a href="#l9"></a>
<span id="l10"></span><a href="#l10"></a>
<span id="l11"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l11"></a>
<span id="l12"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l12"></a>
<span id="l13"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l13"></a>
<span id="l14"> <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></span><a href="#l14"></a>
<span id="l15"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l15"></a>
<span id="l16"> <span class="c"># infinite recursion.</span></span><a href="#l16"></a>
<span id="l17"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l17"></a>
<span id="l18"> <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></span><a href="#l18"></a>
<span id="l19"> <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></span><a href="#l19"></a>
<span id="l20"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l20"></a>
<span id="l21"></span><a href="#l21"></a>
<span id="l22"> <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></span><a href="#l22"></a>
<span id="l23"> <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></span><a href="#l23"></a>
<span id="l24"></span><a href="#l24"></a>
<span id="l25"><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></span><a href="#l25"></a>
<span id="l26"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l26"></a>
<span id="l27"> <span class="kn">try</span><span class="p">:</span></span><a href="#l27"></a>
<span id="l28"> <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></span><a href="#l28"></a>
<span id="l29"> <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></span><a href="#l29"></a>
<span id="l30"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l30"></a>
<span id="l31"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l31"></a>
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <span id="l32"> <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></span><a href="#l32"></a>
<span id="l33"></span><a href="#l33"></a></pre>
Matt Mackall
tests: unify test-highlight
r12445 <div class="sourcelast"></div>
</div>
</div>
</div>
Benoit Boissinot
fix broken tests...
r14053 <script type="text/javascript">process_dates()</script>
Matt Mackall
tests: unify test-highlight
r12445
</body>
</html>
hgweb fileannotate, html
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py') \
Matt Mackall
tests: unify test-highlight
r12445 > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
200 Script output follows
<!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">
<head>
<link rel="icon" href="/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
Benoit Boissinot
fix broken tests...
r14053 <script type="text/javascript" src="/static/mercurial.js"></script>
Matt Mackall
tests: unify test-highlight
r12445
<link rel="stylesheet" href="/highlightcss" type="text/css" />
<title>test: primes.py annotate</title>
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
<a href="http://mercurial.selenic.com/">
<img src="/static/hglogo.png" alt="mercurial" /></a>
</div>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/shortlog/tip">log</a></li>
<li><a href="/graph/tip">graph</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li><a href="/tags">tags</a></li>
Patrick Mezard
test-highlight: fix test output (introduced by 2151703e7f84)
r13618 <li><a href="/bookmarks">bookmarks</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li><a href="/branches">branches</a></li>
</ul>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/rev/tip">changeset</a></li>
<li><a href="/file/tip/">browse</a></li>
Matt Mackall
tests: unify test-highlight
r12445 </ul>
<ul>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/file/tip/primes.py">file</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li><a href="/file/tip/primes.py">latest</a></li>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/diff/tip/primes.py">diff</a></li>
<li><a href="/comparison/tip/primes.py">comparison</a></li>
Matt Mackall
tests: unify test-highlight
r12445 <li class="active">annotate</li>
av6
hgweb: don't dereference symbolic revision in paper & coal style (issue2296)...
r25606 <li><a href="/log/tip/primes.py">file log</a></li>
<li><a href="/raw-annotate/tip/primes.py">raw</a></li>
Matt Mackall
tests: unify test-highlight
r12445 </ul>
Augie Fackler
hgweb: add help link to templates missed in ead4e21f49f1
r12680 <ul>
<li><a href="/help">help</a></li>
</ul>
Matt Mackall
tests: unify test-highlight
r12445 </div>
<div class="main">
Matt Mackall
tests: fix up test-highlight for breadcrumb changes
r18291 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 <h3>
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 annotate primes.py @ 0:<a href="/rev/06824edf55d0">06824edf55d0</a>
av6
hgweb: link to revision by node hash in paper & coal...
r25617 <span class="tag">tip</span>
</h3>
Matt Mackall
tests: unify test-highlight
r12445
<form class="search" action="/log">
<p><input name="rev" id="search1" type="text" size="30" /></p>
Alexander Plavin
paper: edit search hint to include new feature description
r19796 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
Matt Mackall
tests: unify test-highlight
r12445 </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>
Brodie Rao
hgweb: fix dynamic date calculation not working under Safari...
r15375 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
Matt Mackall
tests: unify test-highlight
r12445 </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">
<table class="bigtable">
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 <thead>
Matt Mackall
tests: unify test-highlight
r12445 <tr>
<th class="annotate">rev</th>
<th class="line">&nbsp;&nbsp;line source</th>
</tr>
Anton Shestakov
hgweb: replace implicit <tbody> with explicit <thead> where appropriate...
r24054 </thead>
Alexander Plavin
hgweb: make stripes in file annotate view with CSS
r19449 <tbody class="stripes2">
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l1">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l1"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l2">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l2"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l2"> 2</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l3">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l3"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l4">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l4"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l4"> 4</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l5">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l5"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l6">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l6"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l7">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l7"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l8">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l8"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l8"> 8</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l9">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l9"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l10">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l10"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l10"> 10</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l11">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l11"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l12">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l12"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l13">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l13"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l14">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l14"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l15">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l15"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l16">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l16"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l16"> 16</a> <span class="c"># infinite recursion.</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l17">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l17"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l18">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l18"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l19">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l19"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l20">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l20"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l21">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l21"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l21"> 21</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l22">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l22"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l23">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l23"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l24">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l24"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l24"> 24</a> </td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l25">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l25"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l26">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l26"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l27">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l27"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l28">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l28"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l29">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l29"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l30">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l30"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l31">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l31"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <tr id="l32">
Matt Mackall
tests: unify test-highlight
r12445 <td class="annotate">
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <a href="/annotate/06824edf55d0/primes.py#l32"
title="06824edf55d0: a">test@0</a>
Matt Mackall
tests: unify test-highlight
r12445 </td>
Alexander Plavin
hgweb: highlight line which is linked to at annotate view
r19463 <td class="source"><a href="#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>
Matt Mackall
tests: unify test-highlight
r12445 </tr>
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 <tr id="l33">
<td class="annotate">
<a href="/annotate/06824edf55d0/primes.py#l33"
title="06824edf55d0: a">test@0</a>
</td>
<td class="source"><a href="#l33"> 33</a> </td>
</tr>
Alexander Plavin
hgweb: make stripes in file annotate view with CSS
r19449 </tbody>
Matt Mackall
tests: unify test-highlight
r12445 </table>
</div>
</div>
</div>
Benoit Boissinot
fix broken tests...
r14053 <script type="text/javascript">process_dates()</script>
Matt Mackall
tests: unify test-highlight
r12445
</body>
</html>
hgweb fileannotate, raw
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
Matt Mackall
tests: unify test-highlight
r12445 > | sed "s/test@//" > a
$ echo "200 Script output follows" > b
$ echo "" >> b
$ echo "" >> b
$ hg annotate "primes.py" >> b
$ echo "" >> b
$ echo "" >> b
$ echo "" >> b
$ echo "" >> b
Danek Duvall
solaris: diff -u emits "No differences encountered"...
r20598 $ cmp b a || diff -u b a
Matt Mackall
tests: unify test-highlight
r12445
hgweb filerevision, raw
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py?style=raw') \
Matt Mackall
tests: unify test-highlight
r12445 > > a
$ echo "200 Script output follows" > b
$ echo "" >> b
$ hg cat primes.py >> b
Danek Duvall
solaris: diff -u emits "No differences encountered"...
r20598 $ cmp b a || diff -u b a
Matt Mackall
tests: unify test-highlight
r12445
hgweb highlightcss friendly
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
Matt Mackall
tests: unify test-highlight
r12445 $ head -n 4 out
200 Script output follows
/* pygments_style = friendly */
$ rm out
errors encountered
$ cat errors.log
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Matt Mackall
tests: unify test-highlight
r12445
Change the pygments style
$ cat > .hg/hgrc <<EOF
> [web]
> pygments_style = fruity
> EOF
hg serve again
$ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
$ cat hg.pid >> $DAEMON_PIDS
hgweb highlightcss fruity
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
Matt Mackall
tests: unify test-highlight
r12445 $ head -n 4 out
200 Script output follows
/* pygments_style = fruity */
$ rm out
errors encountered
$ cat errors.log
$ cd ..
$ hg init eucjp
$ cd eucjp
Augie Fackler
tests: use $PYTHON instead of hardcoding python...
r22947 $ $PYTHON -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
Matt Mackall
tests: unify test-highlight
r12445 $ hg ci -Ama
adding eucjp.txt
$ hgserveget () {
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 > killdaemons.py
Matt Mackall
tests: unify test-highlight
r12445 > echo % HGENCODING="$1" hg serve
> HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
> cat hg.pid >> $DAEMON_PIDS
>
> echo % hgweb filerevision, html
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 > get-with-headers.py localhost:$HGPORT "file/tip/$2" \
Mads Kiilerich
tests: use (esc) instead of other kinds of string escaping
r12943 > | grep '<div class="parity0 source">'
Matt Mackall
tests: unify test-highlight
r12445 > echo % errors encountered
> cat errors.log
> }
$ hgserveget euc-jp eucjp.txt
% HGENCODING=euc-jp hg serve
% hgweb filerevision, html
% errors encountered
$ hgserveget utf-8 eucjp.txt
% HGENCODING=utf-8 hg serve
% hgweb filerevision, html
% errors encountered
$ hgserveget us-ascii eucjp.txt
% HGENCODING=us-ascii hg serve
% hgweb filerevision, html
% errors encountered
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..