Show More
@@ -50,25 +50,26 b' def compilere(pat, multiline=False):' | |||||
50 | pass |
|
50 | pass | |
51 | return re.compile(pat) |
|
51 | return re.compile(pat) | |
52 |
|
52 | |||
|
53 | # check "rules depending on implementation of repquote()" in each | |||
|
54 | # patterns (especially pypats), before changing around repquote() | |||
|
55 | _repquotefixedmap = {' ': ' ', '\n': '\n', '.': 'p', ':': 'q', | |||
|
56 | '%': '%', '\\': 'b', '*': 'A', '+': 'P', '-': 'M'} | |||
|
57 | def _repquoteencodechr(i): | |||
|
58 | if i > 255: | |||
|
59 | return 'u' | |||
|
60 | c = chr(i) | |||
|
61 | if c in _repquotefixedmap: | |||
|
62 | return _repquotefixedmap[c] | |||
|
63 | if c.isalpha(): | |||
|
64 | return 'x' | |||
|
65 | if c.isdigit(): | |||
|
66 | return 'n' | |||
|
67 | return 'o' | |||
|
68 | _repquotett = ''.join(_repquoteencodechr(i) for i in xrange(256)) | |||
|
69 | ||||
53 | def repquote(m): |
|
70 | def repquote(m): | |
54 | # check "rules depending on implementation of repquote()" in each |
|
|||
55 | # patterns (especially pypats), before changing this function |
|
|||
56 | fixedmap = {' ': ' ', '\n': '\n', '.': 'p', ':': 'q', |
|
|||
57 | '%': '%', '\\': 'b', '*': 'A', '+': 'P', '-': 'M'} |
|
|||
58 | def encodechr(i): |
|
|||
59 | if i > 255: |
|
|||
60 | return 'u' |
|
|||
61 | c = chr(i) |
|
|||
62 | if c in fixedmap: |
|
|||
63 | return fixedmap[c] |
|
|||
64 | if c.isalpha(): |
|
|||
65 | return 'x' |
|
|||
66 | if c.isdigit(): |
|
|||
67 | return 'n' |
|
|||
68 | return 'o' |
|
|||
69 | t = m.group('text') |
|
71 | t = m.group('text') | |
70 | tt = ''.join(encodechr(i) for i in xrange(256)) |
|
72 | t = t.translate(_repquotett) | |
71 | t = t.translate(tt) |
|
|||
72 | return m.group('quote') + t + m.group('quote') |
|
73 | return m.group('quote') + t + m.group('quote') | |
73 |
|
74 | |||
74 | def reppython(m): |
|
75 | def reppython(m): |
@@ -276,7 +276,11 b' web templates' | |||||
276 | > ''' "%-6d \n 123456 .:*+-= foobar") |
|
276 | > ''' "%-6d \n 123456 .:*+-= foobar") | |
277 | > EOF |
|
277 | > EOF | |
278 |
|
278 | |||
279 | $ "$check_code" stringjoin.py |
|
279 | (Checking multiple invalid files at once examines whether caching | |
|
280 | translation table for repquote() works as expected or not. All files | |||
|
281 | should break rules depending on result of repquote(), in this case) | |||
|
282 | ||||
|
283 | $ "$check_code" stringjoin.py uigettext.py | |||
280 | stringjoin.py:1: |
|
284 | stringjoin.py:1: | |
281 | > foo = (' foo' |
|
285 | > foo = (' foo' | |
282 | string join across lines with no space |
|
286 | string join across lines with no space | |
@@ -301,9 +305,6 b' web templates' | |||||
301 | stringjoin.py:8: |
|
305 | stringjoin.py:8: | |
302 | > 'bar foo-' |
|
306 | > 'bar foo-' | |
303 | string join across lines with no space |
|
307 | string join across lines with no space | |
304 | [1] |
|
|||
305 |
|
||||
306 | $ "$check_code" uigettext.py |
|
|||
307 | uigettext.py:1: |
|
308 | uigettext.py:1: | |
308 | > ui.status("% 10s %05d % -3.2f %*s %%" |
|
309 | > ui.status("% 10s %05d % -3.2f %*s %%" | |
309 | missing _() in ui message (use () to hide false-positives) |
|
310 | missing _() in ui message (use () to hide false-positives) |
General Comments 0
You need to be logged in to leave comments.
Login now