[Python-checkins] r88837 - in tracker/instances/python-dev/extensions: local_replace.py test/test_local_replace.py
ezio.melotti
python-checkins at python.org
Tue May 24 23:11:36 CEST 2011
Author: ezio.melotti
Date: Tue May 24 23:11:36 2011
New Revision: 88837
Log:
Link to a specific line when :NNN is added after a file name. Also update and add more tests.
Modified:
tracker/instances/python-dev/extensions/local_replace.py
tracker/instances/python-dev/extensions/test/test_local_replace.py
Modified: tracker/instances/python-dev/extensions/local_replace.py
==============================================================================
--- tracker/instances/python-dev/extensions/local_replace.py (original)
+++ tracker/instances/python-dev/extensions/local_replace.py Tue May 24 23:11:36 2011
@@ -21,6 +21,23 @@
]
'''
+def make_file_link(match):
+ baseurl = 'http://hg.python.org/cpython/file/default/'
+ sep = match.group('sep')
+ path = match.group('path')
+ lnum = match.group('lnum') or '' # the match includes the ':'
+ if not path.endswith('/'):
+ # files without and with line number
+ if not lnum:
+ return '<a href="%s%s">%s%s</a>' % (baseurl, path, sep, path)
+ else:
+ return '<a href="%s%s#l%s">%s%s%s</a>' % (baseurl, path, lnum[1:],
+ sep, path, lnum)
+ else:
+ # dirs
+ return '<a href="%s%s">%s%s</a>%s' % (baseurl, path, sep, path, lnum)
+
+
substitutions = [
# r12345, r 12345, rev12345, rev 12345, revision12345, revision 12345
(re.compile(r'\b(?<![/?&;])(?P<revstr>r(ev(ision)?)?\s*)(?P<revision>\d+)'),
@@ -32,11 +49,11 @@
(re.compile(r'\b(?<![/?&;])(?P<revision>[a-fA-F0-9]{12})\b'),
r'<a href="http://hg.python.org/lookup/\g<revision>">\g<revision></a>'),
- # Lib/somefile.py, Modules/somemodule.c, Doc/somedocfile.rst, ...
+ # Lib/somefile.py, Lib/somefile.py:123, Modules/somemodule.c:123, ...
(re.compile(r'(?P<sep>(?<!\w/)|(?<!\w)/)(?P<path>(?:Demo|Doc|Grammar|'
r'Include|Lib|Mac|Misc|Modules|Parser|PC|PCbuild|Python|'
- 'RISCOS|Tools|Objects)/[-.a-zA-Z0-9_/]+[a-zA-Z0-9]/?)'),
- r'<a href="http://hg.python.org/cpython/file/default/\g<path>">\g<sep>\g<path></a>'),
+ r'RISCOS|Tools|Objects)/[-.\w/]+[a-zA-Z0-9]/?)(?P<lnum>:\d{1,5})?'),
+ make_file_link),
]
# if the issue number is too big the db will explode -- limit it to 7 digits
Modified: tracker/instances/python-dev/extensions/test/test_local_replace.py
==============================================================================
--- tracker/instances/python-dev/extensions/test/test_local_replace.py (original)
+++ tracker/instances/python-dev/extensions/test/test_local_replace.py Tue May 24 23:11:36 2011
@@ -47,19 +47,19 @@
test_strings = [
## r12345, r 12345, rev12345, rev 12345, revision12345, revision 12345
('r222 ',
- '<a href="http://svn.python.org/view?rev=222&view=rev">r222</a> '),
+ '<a href="http://hg.python.org/lookup/r222">r222</a> '),
(' r222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">r222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">r222</a> '),
(' r 222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">r 222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">r 222</a> '),
(' rev222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">rev222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">rev222</a> '),
(' rev 222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">rev 222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">rev 222</a> '),
(' revision222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">revision222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">revision222</a> '),
(' revision 222 ',
- ' <a href="http://svn.python.org/view?rev=222&view=rev">revision 222</a> '),
+ ' <a href="http://hg.python.org/lookup/r222">revision 222</a> '),
('wordthatendswithr 222',
'wordthatendswithr 222'),
@@ -96,17 +96,31 @@
## Lib/somefile.py, Modules/somemodule.c, Doc/somedocfile.rst, ...
('Lib/cgi.py',
- '<a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">Lib/cgi.py</a>'),
+ '<a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">Lib/cgi.py</a>'),
('/Lib/cgi.py',
- '<a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">/Lib/cgi.py</a>'),
+ '<a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">/Lib/cgi.py</a>'),
('see Lib/cgi.py.',
- 'see <a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">Lib/cgi.py</a>.'),
+ 'see <a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">Lib/cgi.py</a>.'),
('see /Lib/cgi.py.',
- 'see <a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">/Lib/cgi.py</a>.'),
+ 'see <a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">/Lib/cgi.py</a>.'),
('(Lib/cgi.py)',
- '(<a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">Lib/cgi.py</a>)'),
+ '(<a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">Lib/cgi.py</a>)'),
('(/Lib/cgi.py)',
- '(<a href="http://svn.python.org/view/python/branches/py3k/Lib/cgi.py">/Lib/cgi.py</a>)'),
+ '(<a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">/Lib/cgi.py</a>)'),
+ ('/Lib/http',
+ '<a href="http://hg.python.org/cpython/file/default/Lib/http">/Lib/http</a>'),
+ ('/Lib/http/',
+ '<a href="http://hg.python.org/cpython/file/default/Lib/http/">/Lib/http/</a>'),
+
+ ## Lib/somefile.py:123, Modules/somemodule.c:123, ...
+ ('see Lib/cgi.py:123,',
+ 'see <a href="http://hg.python.org/cpython/file/default/Lib/cgi.py#l123">Lib/cgi.py:123</a>,'),
+ ('see Lib/cgi.py: foo',
+ 'see <a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">Lib/cgi.py</a>: foo'),
+ ('see Lib/cgi.py: 123',
+ 'see <a href="http://hg.python.org/cpython/file/default/Lib/cgi.py">Lib/cgi.py</a>: 123'),
+ ('/Lib/http/:123',
+ '<a href="http://hg.python.org/cpython/file/default/Lib/http/">/Lib/http/</a>:123'),
## URLs
('http://svn.python.org/view/python/tags/r265 ',
More information about the Python-checkins
mailing list