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