comparison tests/test-highlight.t @ 29522:9c37df347485

hgweb: add link to parents of annotated revision in annotate view The link is embedded into a div with class="annotate-info" that only shows up upon hover of the annotate column. To avoid duplicate hover-overs (this new one and the one coming from link's title), drop "title" attribute from a element and put it in the annotate-info element.
author Denis Laxalde <denis.laxalde@logilab.fr>
date Tue, 28 Jun 2016 11:42:42 +0200
parents f694e20193f2
children 4b6afd1b445a
comparison
equal deleted inserted replaced
29521:83147ff53112 29522:9c37df347485
288 </thead> 288 </thead>
289 <tbody class="stripes2"> 289 <tbody class="stripes2">
290 290
291 <tr id="l1" class="thisrev"> 291 <tr id="l1" class="thisrev">
292 <td class="annotate"> 292 <td class="annotate">
293 <a href="/annotate/06824edf55d0/primes.py#l1" 293 <a href="/annotate/06824edf55d0/primes.py#l1">
294 title="06824edf55d0: a">test@0</a> 294 test@0
295 </a>
296 <div class="annotate-info">
297 <div>06824edf55d0: a</div>
298 <div>parents: </div>
299 </div>
295 </td> 300 </td>
296 <td class="source"><a href="#l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td> 301 <td class="source"><a href="#l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
297 </tr> 302 </tr>
298 <tr id="l2" class="thisrev"> 303 <tr id="l2" class="thisrev">
299 <td class="annotate"> 304 <td class="annotate">
300 305
306 <div class="annotate-info">
307 <div>06824edf55d0: a</div>
308 <div>parents: </div>
309 </div>
301 </td> 310 </td>
302 <td class="source"><a href="#l2"> 2</a> </td> 311 <td class="source"><a href="#l2"> 2</a> </td>
303 </tr> 312 </tr>
304 <tr id="l3" class="thisrev"> 313 <tr id="l3" class="thisrev">
305 <td class="annotate"> 314 <td class="annotate">
306 315
316 <div class="annotate-info">
317 <div>06824edf55d0: a</div>
318 <div>parents: </div>
319 </div>
307 </td> 320 </td>
308 <td class="source"><a href="#l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td> 321 <td class="source"><a href="#l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
309 </tr> 322 </tr>
310 <tr id="l4" class="thisrev"> 323 <tr id="l4" class="thisrev">
311 <td class="annotate"> 324 <td class="annotate">
312 325
326 <div class="annotate-info">
327 <div>06824edf55d0: a</div>
328 <div>parents: </div>
329 </div>
313 </td> 330 </td>
314 <td class="source"><a href="#l4"> 4</a> </td> 331 <td class="source"><a href="#l4"> 4</a> </td>
315 </tr> 332 </tr>
316 <tr id="l5" class="thisrev"> 333 <tr id="l5" class="thisrev">
317 <td class="annotate"> 334 <td class="annotate">
318 335
336 <div class="annotate-info">
337 <div>06824edf55d0: a</div>
338 <div>parents: </div>
339 </div>
319 </td> 340 </td>
320 <td class="source"><a href="#l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td> 341 <td class="source"><a href="#l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
321 </tr> 342 </tr>
322 <tr id="l6" class="thisrev"> 343 <tr id="l6" class="thisrev">
323 <td class="annotate"> 344 <td class="annotate">
324 345
346 <div class="annotate-info">
347 <div>06824edf55d0: a</div>
348 <div>parents: </div>
349 </div>
325 </td> 350 </td>
326 <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> 351 <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>
327 </tr> 352 </tr>
328 <tr id="l7" class="thisrev"> 353 <tr id="l7" class="thisrev">
329 <td class="annotate"> 354 <td class="annotate">
330 355
356 <div class="annotate-info">
357 <div>06824edf55d0: a</div>
358 <div>parents: </div>
359 </div>
331 </td> 360 </td>
332 <td class="source"><a href="#l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td> 361 <td class="source"><a href="#l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
333 </tr> 362 </tr>
334 <tr id="l8" class="thisrev"> 363 <tr id="l8" class="thisrev">
335 <td class="annotate"> 364 <td class="annotate">
336 365
366 <div class="annotate-info">
367 <div>06824edf55d0: a</div>
368 <div>parents: </div>
369 </div>
337 </td> 370 </td>
338 <td class="source"><a href="#l8"> 8</a> </td> 371 <td class="source"><a href="#l8"> 8</a> </td>
339 </tr> 372 </tr>
340 <tr id="l9" class="thisrev"> 373 <tr id="l9" class="thisrev">
341 <td class="annotate"> 374 <td class="annotate">
342 375
376 <div class="annotate-info">
377 <div>06824edf55d0: a</div>
378 <div>parents: </div>
379 </div>
343 </td> 380 </td>
344 <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> 381 <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>
345 </tr> 382 </tr>
346 <tr id="l10" class="thisrev"> 383 <tr id="l10" class="thisrev">
347 <td class="annotate"> 384 <td class="annotate">
348 385
386 <div class="annotate-info">
387 <div>06824edf55d0: a</div>
388 <div>parents: </div>
389 </div>
349 </td> 390 </td>
350 <td class="source"><a href="#l10"> 10</a> </td> 391 <td class="source"><a href="#l10"> 10</a> </td>
351 </tr> 392 </tr>
352 <tr id="l11" class="thisrev"> 393 <tr id="l11" class="thisrev">
353 <td class="annotate"> 394 <td class="annotate">
354 395
396 <div class="annotate-info">
397 <div>06824edf55d0: a</div>
398 <div>parents: </div>
399 </div>
355 </td> 400 </td>
356 <td class="source"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td> 401 <td class="source"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
357 </tr> 402 </tr>
358 <tr id="l12" class="thisrev"> 403 <tr id="l12" class="thisrev">
359 <td class="annotate"> 404 <td class="annotate">
360 405
406 <div class="annotate-info">
407 <div>06824edf55d0: a</div>
408 <div>parents: </div>
409 </div>
361 </td> 410 </td>
362 <td class="source"><a href="#l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td> 411 <td class="source"><a href="#l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
363 </tr> 412 </tr>
364 <tr id="l13" class="thisrev"> 413 <tr id="l13" class="thisrev">
365 <td class="annotate"> 414 <td class="annotate">
366 415
416 <div class="annotate-info">
417 <div>06824edf55d0: a</div>
418 <div>parents: </div>
419 </div>
367 </td> 420 </td>
368 <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> 421 <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>
369 </tr> 422 </tr>
370 <tr id="l14" class="thisrev"> 423 <tr id="l14" class="thisrev">
371 <td class="annotate"> 424 <td class="annotate">
372 425
426 <div class="annotate-info">
427 <div>06824edf55d0: a</div>
428 <div>parents: </div>
429 </div>
373 </td> 430 </td>
374 <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> 431 <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>
375 </tr> 432 </tr>
376 <tr id="l15" class="thisrev"> 433 <tr id="l15" class="thisrev">
377 <td class="annotate"> 434 <td class="annotate">
378 435
436 <div class="annotate-info">
437 <div>06824edf55d0: a</div>
438 <div>parents: </div>
439 </div>
379 </td> 440 </td>
380 <td class="source"><a href="#l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td> 441 <td class="source"><a href="#l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
381 </tr> 442 </tr>
382 <tr id="l16" class="thisrev"> 443 <tr id="l16" class="thisrev">
383 <td class="annotate"> 444 <td class="annotate">
384 445
446 <div class="annotate-info">
447 <div>06824edf55d0: a</div>
448 <div>parents: </div>
449 </div>
385 </td> 450 </td>
386 <td class="source"><a href="#l16"> 16</a> <span class="c"># infinite recursion.</span></td> 451 <td class="source"><a href="#l16"> 16</a> <span class="c"># infinite recursion.</span></td>
387 </tr> 452 </tr>
388 <tr id="l17" class="thisrev"> 453 <tr id="l17" class="thisrev">
389 <td class="annotate"> 454 <td class="annotate">
390 455
456 <div class="annotate-info">
457 <div>06824edf55d0: a</div>
458 <div>parents: </div>
459 </div>
391 </td> 460 </td>
392 <td class="source"><a href="#l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td> 461 <td class="source"><a href="#l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
393 </tr> 462 </tr>
394 <tr id="l18" class="thisrev"> 463 <tr id="l18" class="thisrev">
395 <td class="annotate"> 464 <td class="annotate">
396 465
466 <div class="annotate-info">
467 <div>06824edf55d0: a</div>
468 <div>parents: </div>
469 </div>
397 </td> 470 </td>
398 <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="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td> 471 <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="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
399 </tr> 472 </tr>
400 <tr id="l19" class="thisrev"> 473 <tr id="l19" class="thisrev">
401 <td class="annotate"> 474 <td class="annotate">
402 475
476 <div class="annotate-info">
477 <div>06824edf55d0: a</div>
478 <div>parents: </div>
479 </div>
403 </td> 480 </td>
404 <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> 481 <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>
405 </tr> 482 </tr>
406 <tr id="l20" class="thisrev"> 483 <tr id="l20" class="thisrev">
407 <td class="annotate"> 484 <td class="annotate">
408 485
486 <div class="annotate-info">
487 <div>06824edf55d0: a</div>
488 <div>parents: </div>
489 </div>
409 </td> 490 </td>
410 <td class="source"><a href="#l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td> 491 <td class="source"><a href="#l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
411 </tr> 492 </tr>
412 <tr id="l21" class="thisrev"> 493 <tr id="l21" class="thisrev">
413 <td class="annotate"> 494 <td class="annotate">
414 495
496 <div class="annotate-info">
497 <div>06824edf55d0: a</div>
498 <div>parents: </div>
499 </div>
415 </td> 500 </td>
416 <td class="source"><a href="#l21"> 21</a> </td> 501 <td class="source"><a href="#l21"> 21</a> </td>
417 </tr> 502 </tr>
418 <tr id="l22" class="thisrev"> 503 <tr id="l22" class="thisrev">
419 <td class="annotate"> 504 <td class="annotate">
420 505
506 <div class="annotate-info">
507 <div>06824edf55d0: a</div>
508 <div>parents: </div>
509 </div>
421 </td> 510 </td>
422 <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="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></td> 511 <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="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></td>
423 </tr> 512 </tr>
424 <tr id="l23" class="thisrev"> 513 <tr id="l23" class="thisrev">
425 <td class="annotate"> 514 <td class="annotate">
426 515
516 <div class="annotate-info">
517 <div>06824edf55d0: a</div>
518 <div>parents: </div>
519 </div>
427 </td> 520 </td>
428 <td class="source"><a href="#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></td> 521 <td class="source"><a href="#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></td>
429 </tr> 522 </tr>
430 <tr id="l24" class="thisrev"> 523 <tr id="l24" class="thisrev">
431 <td class="annotate"> 524 <td class="annotate">
432 525
526 <div class="annotate-info">
527 <div>06824edf55d0: a</div>
528 <div>parents: </div>
529 </div>
433 </td> 530 </td>
434 <td class="source"><a href="#l24"> 24</a> </td> 531 <td class="source"><a href="#l24"> 24</a> </td>
435 </tr> 532 </tr>
436 <tr id="l25" class="thisrev"> 533 <tr id="l25" class="thisrev">
437 <td class="annotate"> 534 <td class="annotate">
438 535
536 <div class="annotate-info">
537 <div>06824edf55d0: a</div>
538 <div>parents: </div>
539 </div>
439 </td> 540 </td>
440 <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> 541 <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>
441 </tr> 542 </tr>
442 <tr id="l26" class="thisrev"> 543 <tr id="l26" class="thisrev">
443 <td class="annotate"> 544 <td class="annotate">
444 545
546 <div class="annotate-info">
547 <div>06824edf55d0: a</div>
548 <div>parents: </div>
549 </div>
445 </td> 550 </td>
446 <td class="source"><a href="#l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td> 551 <td class="source"><a href="#l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
447 </tr> 552 </tr>
448 <tr id="l27" class="thisrev"> 553 <tr id="l27" class="thisrev">
449 <td class="annotate"> 554 <td class="annotate">
450 555
556 <div class="annotate-info">
557 <div>06824edf55d0: a</div>
558 <div>parents: </div>
559 </div>
451 </td> 560 </td>
452 <td class="source"><a href="#l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td> 561 <td class="source"><a href="#l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
453 </tr> 562 </tr>
454 <tr id="l28" class="thisrev"> 563 <tr id="l28" class="thisrev">
455 <td class="annotate"> 564 <td class="annotate">
456 565
566 <div class="annotate-info">
567 <div>06824edf55d0: a</div>
568 <div>parents: </div>
569 </div>
457 </td> 570 </td>
458 <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="mi">1</span><span class="p">])</span></td> 571 <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="mi">1</span><span class="p">])</span></td>
459 </tr> 572 </tr>
460 <tr id="l29" class="thisrev"> 573 <tr id="l29" class="thisrev">
461 <td class="annotate"> 574 <td class="annotate">
462 575
576 <div class="annotate-info">
577 <div>06824edf55d0: a</div>
578 <div>parents: </div>
579 </div>
463 </td> 580 </td>
464 <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> 581 <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>
465 </tr> 582 </tr>
466 <tr id="l30" class="thisrev"> 583 <tr id="l30" class="thisrev">
467 <td class="annotate"> 584 <td class="annotate">
468 585
586 <div class="annotate-info">
587 <div>06824edf55d0: a</div>
588 <div>parents: </div>
589 </div>
469 </td> 590 </td>
470 <td class="source"><a href="#l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td> 591 <td class="source"><a href="#l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td>
471 </tr> 592 </tr>
472 <tr id="l31" class="thisrev"> 593 <tr id="l31" class="thisrev">
473 <td class="annotate"> 594 <td class="annotate">
474 595
596 <div class="annotate-info">
597 <div>06824edf55d0: a</div>
598 <div>parents: </div>
599 </div>
475 </td> 600 </td>
476 <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> 601 <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>
477 </tr> 602 </tr>
478 <tr id="l32" class="thisrev"> 603 <tr id="l32" class="thisrev">
479 <td class="annotate"> 604 <td class="annotate">
480 605
606 <div class="annotate-info">
607 <div>06824edf55d0: a</div>
608 <div>parents: </div>
609 </div>
481 </td> 610 </td>
482 <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> 611 <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>
483 </tr> 612 </tr>
484 <tr id="l33" class="thisrev"> 613 <tr id="l33" class="thisrev">
485 <td class="annotate"> 614 <td class="annotate">
486 615
616 <div class="annotate-info">
617 <div>06824edf55d0: a</div>
618 <div>parents: </div>
619 </div>
487 </td> 620 </td>
488 <td class="source"><a href="#l33"> 33</a> </td> 621 <td class="source"><a href="#l33"> 33</a> </td>
489 </tr> 622 </tr>
490 </tbody> 623 </tbody>
491 </table> 624 </table>