comparison ja/examples/data/check_whitespace.py @ 290:b0db5adf11c1 ja_root

fork Japanese translation.
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Wed, 06 Feb 2008 17:43:11 +0900
parents en/examples/data/check_whitespace.py@e3894bb9d1f5
children
comparison
equal deleted inserted replaced
289:7be02466421b 290:b0db5adf11c1
1 #!/usr/bin/python
2
3 import re
4
5 def trailing_whitespace(difflines):
6 added, linenum, header = [], 0, False
7
8 for line in difflines:
9 if header:
10 # remember the name of the file that this diff affects
11 m = re.match(r'(?:---|\+\+\+) ([^\t]+)', line)
12 if m and m.group(1) != '/dev/null':
13 filename = m.group(1).split('/', 1)[-1]
14 if line.startswith('+++ '):
15 header = False
16 continue
17 if line.startswith('diff '):
18 header = True
19 continue
20 # hunk header - save the line number
21 m = re.match(r'@@ -\d+,\d+ \+(\d+),', line)
22 if m:
23 linenum = int(m.group(1))
24 continue
25 # hunk body - check for an added line with trailing whitespace
26 m = re.match(r'\+.*\s$', line)
27 if m:
28 added.append((filename, linenum))
29 if line and line[0] in ' +':
30 linenum += 1
31 return added
32
33 if __name__ == '__main__':
34 import os, sys
35
36 added = trailing_whitespace(os.popen('hg export tip'))
37 if added:
38 for filename, linenum in added:
39 print >> sys.stderr, ('%s, line %d: trailing whitespace added' %
40 (filename, linenum))
41 # save the commit message so we don't need to retype it
42 os.system('hg tip --template "{desc}" > .hg/commit.save')
43 print >> sys.stderr, 'commit message saved to .hg/commit.save'
44 sys.exit(1)