rev |
line source |
Giulio@797
|
1 <!-- BEGIN ch09/check_whitespace.py.lst -->
|
Giulio@797
|
2 <programlisting>#!/usr/bin/env python
|
Giulio@797
|
3 #
|
Giulio@797
|
4 # salvate il file come .hg/controllo_spazio_bianco.py e rendetelo eseguibile
|
Giulio@797
|
5
|
Giulio@797
|
6 import re
|
Giulio@797
|
7
|
Giulio@797
|
8 def spazio_bianco_in_coda(righe_di_diff):
|
Giulio@797
|
9 #
|
Giulio@797
|
10 numriga, intestazione = 0, False
|
Giulio@797
|
11
|
Giulio@797
|
12 for riga in righe_di_diff:
|
Giulio@797
|
13 if intestazione:
|
Giulio@797
|
14 # ricorda il nome del file coinvolto in questo diff
|
Giulio@797
|
15 m = re.match(r'(?:---|\+\+\+) ([^\t]+)', riga)
|
Giulio@797
|
16 if m and m.group(1) != '/dev/null':
|
Giulio@797
|
17 nomefile = m.group(1).split('/', 1)[-1]
|
Giulio@797
|
18 if riga.startswith('+++ '):
|
Giulio@797
|
19 intestazione = False
|
Giulio@797
|
20 continue
|
Giulio@797
|
21 if riga.startswith('diff '):
|
Giulio@797
|
22 intestazione = True
|
Giulio@797
|
23 continue
|
Giulio@797
|
24 # intestazione - salva il numero di riga
|
Giulio@797
|
25 m = re.match(r'@@ -\d+,\d+ \+(\d+),', riga)
|
Giulio@797
|
26 if m:
|
Giulio@797
|
27 numriga = int(m.group(1))
|
Giulio@797
|
28 continue
|
Giulio@797
|
29 # corpo - cerca una riga aggiunta con spazio bianco in coda
|
Giulio@797
|
30 m = re.match(r'\+.*\s$', riga)
|
Giulio@797
|
31 if m:
|
Giulio@797
|
32 yield nomefile, numriga
|
Giulio@797
|
33 if riga and riga[0] in ' +':
|
Giulio@797
|
34 numriga += 1
|
Giulio@797
|
35
|
Giulio@797
|
36 if __name__ == '__main__':
|
Giulio@797
|
37 import os, sys
|
Giulio@797
|
38
|
Giulio@797
|
39 aggiunte = 0
|
Giulio@797
|
40 for nomefile, numriga in spazio_bianco_in_coda(os.popen('hg export tip')):
|
Giulio@797
|
41 print >> sys.stderr, ('%s, riga %d: aggiunto spazio bianco in coda' %
|
Giulio@797
|
42 (nomefile, numriga))
|
Giulio@797
|
43 aggiunte += 1
|
Giulio@797
|
44 if aggiunte:
|
Giulio@797
|
45 # salva il messaggio di commit in modo da non doverlo digitare di nuovo
|
Giulio@797
|
46 os.system('hg tip --template "{desc}" > .hg/commit.save')
|
Giulio@797
|
47 print >> sys.stderr, 'messaggio di commit salvato nel file .hg/commit.save'
|
Giulio@797
|
48 sys.exit(1)</programlisting>
|
Giulio@797
|
49 <!-- END ch09/check_whitespace.py.lst -->
|