hgbook

annotate it/examples/ch09-check_whitespace.py.lst.it @ 977:719b03ea27c8

merge with Italian, and very (few) work on ch03
author Romain PELISSE <belaran@gmail.com>
date Fri Sep 04 16:33:46 2009 +0200 (2009-09-04)
parents 713f0f69029a 7252e7b7f07d
children
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
gpiancastelli@840 30 m = re.match(r'\+.*[ \t]$', 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 &gt;&gt; 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}" &gt; .hg/commit.save')
Giulio@797 47 print &gt;&gt; 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 -->