Show More
@@ -0,0 +1,64 b'' | |||||
|
1 | # interhg.py - interhg | |||
|
2 | # | |||
|
3 | # Copyright 2007 OHASHI Hideya <ohachige@gmail.com> | |||
|
4 | # | |||
|
5 | # This software may be used and distributed according to the terms | |||
|
6 | # of the GNU General Public License, incorporated herein by reference. | |||
|
7 | # | |||
|
8 | # The `interhg' Mercurial extension allows you to change changelog and | |||
|
9 | # summary text just like InterWiki way. | |||
|
10 | # | |||
|
11 | # To enable this extension: | |||
|
12 | # | |||
|
13 | # [extensions] | |||
|
14 | # interhg = | |||
|
15 | # | |||
|
16 | # This is an example to link to a bug tracking system. | |||
|
17 | # | |||
|
18 | # [interhg] | |||
|
19 | # pat1 = s/issue(\d+)/ <a href="http:\/\/bts\/issue\1">issue\1<\/a> / | |||
|
20 | # | |||
|
21 | # You can add patterns to use pat2, pat3, ... | |||
|
22 | # For exapmle. | |||
|
23 | # | |||
|
24 | # pat2 = s/(^|\s)#(\d+)\b/ <b>#\2<\/b> / | |||
|
25 | ||||
|
26 | import re | |||
|
27 | from mercurial.hgweb import hgweb_mod | |||
|
28 | from mercurial import templater | |||
|
29 | ||||
|
30 | orig_escape = templater.common_filters["escape"] | |||
|
31 | ||||
|
32 | interhg_table = [] | |||
|
33 | ||||
|
34 | def interhg_escape(x): | |||
|
35 | escstr = orig_escape(x) | |||
|
36 | for pat in interhg_table: | |||
|
37 | regexp = pat[0] | |||
|
38 | format = pat[1] | |||
|
39 | escstr = regexp.sub(format, escstr) | |||
|
40 | return escstr | |||
|
41 | ||||
|
42 | templater.common_filters["escape"] = interhg_escape | |||
|
43 | ||||
|
44 | orig_refresh = hgweb_mod.hgweb.refresh | |||
|
45 | ||||
|
46 | def interhg_refresh(self): | |||
|
47 | interhg_table[:] = [] | |||
|
48 | num = 1 | |||
|
49 | while True: | |||
|
50 | key = 'pat%d' % num | |||
|
51 | pat = self.config('interhg', key) | |||
|
52 | if pat == None: | |||
|
53 | break | |||
|
54 | pat = pat[2:-1] | |||
|
55 | span = re.search(r'[^\\]/', pat).span() | |||
|
56 | regexp = pat[:span[0] + 1] | |||
|
57 | format = pat[span[1]:] | |||
|
58 | format = re.sub(r'\\/', '/', format) | |||
|
59 | regexp = re.compile(regexp) | |||
|
60 | interhg_table.append((regexp, format)) | |||
|
61 | num += 1 | |||
|
62 | return orig_refresh(self) | |||
|
63 | ||||
|
64 | hgweb_mod.hgweb.refresh = interhg_refresh |
General Comments 0
You need to be logged in to leave comments.
Login now