##// END OF EJS Templates
hgweb: fix websub regex flag syntax on Python 3...
hgweb: fix websub regex flag syntax on Python 3 The `websub` config section for hgweb is broken under Python 3 when using regex flags syntax (ie the optional `i` in the example from `hg help config.websub`: patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i] Flags are pulled out of the specified byte-string using a regular expression, and uppercased. The flags are then iterated over and passed to the `re` module using `re.__dict__[item]`, to get the object attribute of the same name from the `re` module. So on Python 2 if the `il` flags are passed, this transition looks like: `'il'` -> `'IL'` -> `'I'` -> `re.__dict__['I']` -> `re.I` However on Python 3, these are bytes objects. When we iterate over a bytes object in Python 3, instead of getting the individual characters in the string as string objects of length one, we get the integer \ value corresponding to that byte. So the same transition looks like: `b'il'` -> `b'IL'` -> `73` -> `re.__dict__[73]` -> `KeyError` This commit fixes the type mismatch by converting the bytes to a system string before iterating over each element to pass to `re`. The transition will now look like: `b'il'` -> `u'IL'` -> `u'I'` -> `re.__dict__[u'I']` -> `re.I` In addition we expand `test-websub.t` to cover the regex flag case (for both the `websub` section and `interhg`). Differential Revision: https://phab.mercurial-scm.org/D6788

File last commit:

r37419:7d94fe3e default
r43189:6ccf539a default
Show More
summary.tmpl
71 lines | 2.8 KiB | application/x-cheetah | CheetahLexer
{header}
<title>{repo|escape}: Summary</title>
<link rel="alternate" type="application/atom+xml" href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
<link rel="alternate" type="application/rss+xml" href="{url|urlescape}rss-log" title="RSS feed for {repo|escape}"/>
</head>
<body>
<div id="container">
<div class="page-header">
<h1 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb} / summary</h1>
{searchform}
<ul class="page-nav">
<li class="current">summary</li>
<li><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a></li>
<li><a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a></li>
<li><a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a></li>
<li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
<li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
<li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
<li><a href="{url|urlescape}file{sessionvars%urlparameter}">files</a></li>
{archives%archiveentry}
<li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
</ul>
</div>
<h2 class="no-link no-border">Mercurial Repository Overview</h2>
<dl class="overview">
<dt>name</dt>
<dd>{repo|escape}</dd>
<dt>description</dt>
<dd>{desc}</dd>
<dt>owner</dt>
<dd>{owner|obfuscate}</dd>
<dt>last change</dt>
<dd class="date age">{lastchange|rfc822date}</dd>
</dl>
<h2><a href="{url|urlescape}shortlog{sessionvars%urlparameter}">Changes</a></h2>
<table>
{shortlog%shortlogentry}
<tr class="light">
<td colspan="4"><a class="list" href="{url|urlescape}shortlog{sessionvars%urlparameter}">...</a></td>
</tr>
</table>
<h2><a href="{url|urlescape}tags{sessionvars%urlparameter}">Tags</a></h2>
<table>
{tags%tagentry}
<tr class="light">
<td colspan="3"><a class="list" href="{url|urlescape}tags{sessionvars%urlparameter}">...</a></td>
</tr>
</table>
<h2><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">Bookmarks</a></h2>
<table>
{bookmarks%bookmarkentry}
<tr class="light">
<td colspan="3"><a class="list" href="{url|urlescape}bookmarks{sessionvars%urlparameter}">...</a></td>
</tr>
</table>
<h2><a href="{url|urlescape}branches{sessionvars%urlparameter}">Branches</a></h2>
<table>
{branches%branchentry}
<tr class="light">
<td colspan="3"><a class="list" href="{url|urlescape}branches{sessionvars%urlparameter}">...</a></td>
</tr>
</table>
{footer}