diff options
author | Sylvain <syt@logilab.fr> | 2007-01-10 17:29:14 +0100 |
---|---|---|
committer | Sylvain <syt@logilab.fr> | 2007-01-10 17:29:14 +0100 |
commit | 63c7d018f7553e36ccc365aebb2d0512da246b1a (patch) | |
tree | 4e950b6215bc0b9ea1e5a66e24c0640da9c8ce33 | |
parent | c880a246f4647b1f395d054c42d455982c6bae2e (diff) | |
download | logilab-common-63c7d018f7553e36ccc365aebb2d0512da246b1a.tar.gz |
fix rest normalization to avoid data loss
-rw-r--r-- | test/unittest_textutils.py | 76 | ||||
-rw-r--r-- | textutils.py | 14 |
2 files changed, 82 insertions, 8 deletions
diff --git a/test/unittest_textutils.py b/test/unittest_textutils.py index 76036d0..383951c 100644 --- a/test/unittest_textutils.py +++ b/test/unittest_textutils.py @@ -1,10 +1,7 @@ """ -unit tests for module fileutils +unit tests for module textutils squeleton generated by /home/syt/cvs_work/logilab/pyreverse/py2tests.py on Sep 08 at 09:1:31 - -Some file / file path manipulation utilities - """ import re from os import linesep @@ -63,6 +60,77 @@ http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i18n''') + def test_nonregr_rest_normalize(self): + self.assertEquals(ulines(tu.normalize_text("""... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et aller discuter avec les autres si c'est utile ou necessaire. + + +**adim**: un poil de ginco, une pincee d'agueol, du pypy et 10 jours de dijon d'ici la fin du mois dont 4 sur place. + +**alf**: une intro a pypy, un peu de ginco peut-etre et preparer cours IN2P01. + +**arthur**: y'a du eStock a faire + +**auc**: atuk02 et ginco + +**david**: terminer EDFC21 qui etait du pour le 21 decembre et pour lequel il reste encore 1 semaine + +**jphc**: deposer les comptes, finir des papiers administratifs, envoyer des voeux et garder un oeil sur les reponses a faire et nouveaux appels. + + +**katia**: AGRI06 vient de demarrer et y'a besoin d'arthur + +**ludal**: terminer EDFC16 devrait prendre jusqu'a mardi prochain. + +**nico**: qq reponses (dont EADA03 pour laquelle il me faudra de l'aide de gens qui aiment l'admin sys) et mise en place d'un tableau de bord propre a partir de ce qu'on a deja (situation des comptes, affaires en cours avec nb de jours prevu et depenses, etc.). + +**ocy**: voeux, recrutement, tableau de bord, reponses + +**syt**: il sera avec alf a compter de jeudi pour preparation sprint pypy et ptet un peu de ginco sur les bords + """, rest=True)), """... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et +aller discuter avec les autres si c'est utile ou necessaire. + +**adim**: un poil de ginco, une pincee d'agueol, du pypy et 10 jours de dijon +d'ici la fin du mois dont 4 sur place. + +**alf**: une intro a pypy, un peu de ginco peut-etre et preparer cours IN2P01. + +**arthur**: y'a du eStock a faire + +**auc**: atuk02 et ginco + +**david**: terminer EDFC21 qui etait du pour le 21 decembre et pour lequel il +reste encore 1 semaine + +**jphc**: deposer les comptes, finir des papiers administratifs, envoyer des +voeux et garder un oeil sur les reponses a faire et nouveaux appels. + +**katia**: AGRI06 vient de demarrer et y'a besoin d'arthur + +**ludal**: terminer EDFC16 devrait prendre jusqu'a mardi prochain. + +**nico**: qq reponses (dont EADA03 pour laquelle il me faudra de l'aide de gens +qui aiment l'admin sys) et mise en place d'un tableau de bord propre a partir de +ce qu'on a deja (situation des comptes, affaires en cours avec nb de jours prevu +et depenses, etc.). + +**ocy**: voeux, recrutement, tableau de bord, reponses + +**syt**: il sera avec alf a compter de jeudi pour preparation sprint pypy et +ptet un peu de ginco sur les bords""") + + def test_normalize_rest_paragraph(self): + self.assertEquals(ulines(tu.normalize_rest_paragraph("""**nico**: qq reponses (dont EADA03 pour laquelle il me faudra de l'aide de gens +qui aiment l'admin sys) et mise en place d'un tableau de bord propre a partir de ce qu'on a deja (situation des comptes, affaires en cours avec nb de jours prevu et depenses, etc.).""")), + """**nico**: qq reponses (dont EADA03 pour laquelle il me faudra de l'aide de gens +qui aiment l'admin sys) et mise en place d'un tableau de bord propre a partir de +ce qu'on a deja (situation des comptes, affaires en cours avec nb de jours prevu +et depenses, etc.).""") + + def test_normalize_rest_paragraph(self): + self.assertEquals(ulines(tu.normalize_rest_paragraph("""**syt**: il sera avec alf a compter de jeudi pour preparation sprint pypy et ptet un peu de ginco sur les bords""")), + """""") + + class NormalizeParagraphTC(TestCase): def test_known_values(self): diff --git a/textutils.py b/textutils.py index c26f932..ba0bffa 100644 --- a/textutils.py +++ b/textutils.py @@ -156,11 +156,17 @@ def normalize_rest_paragraph(text, line_len=80, indent=''): for line in text.splitlines(): line = indent + toreport + _NORM_SPACES_RGX.sub(' ', line.strip()) toreport = '' - if len(line) > line_len: + while len(line) > line_len: # too long line, need split line, toreport = splittext(line, line_len) - toreport += ' ' - lines.append(line) + lines.append(line) + if toreport: + line = indent + toreport + ' ' + toreport = '' + else: + line = '' + if line: + lines.append(line.strip()) return linesep.join(lines) def splittext(text, line_len): @@ -179,7 +185,7 @@ def splittext(text, line_len): pos = min(len(text), line_len) while len(text) > pos and text[pos] != ' ': pos += 1 - return text[:pos], text[pos+1:] + return text[:pos], text[pos+1:].strip() def get_csv(string, sep=','): |