hgbook

annotate it/examples/ch09-check_whitespace.py.lst.it @ 976:713f0f69029a

merge with Italian, and very (few) work on ch03
author Romain PELISSE <belaran@gmail.com>
date Fri Sep 04 16:33:35 2009 +0200 (2009-09-04)
parents
children 719b03ea27c8
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 &gt;&gt; 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}" &gt; .hg/commit.save')
belaran@976 47 print &gt;&gt; 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 -->