summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain <syt@logilab.fr>2007-01-10 17:31:10 +0100
committerSylvain <syt@logilab.fr>2007-01-10 17:31:10 +0100
commit39ae2667173b691c201f753cd31dd8117de2300f (patch)
tree00b581ff8a91d96e9ec7f861029e07c8623bbcbc
parent2f6c05bc585bb5c55e5dad217f6c154f7c28ec4b (diff)
parent63c7d018f7553e36ccc365aebb2d0512da246b1a (diff)
downloadlogilab-common-39ae2667173b691c201f753cd31dd8117de2300f.tar.gz
merge
-rw-r--r--test/unittest_textutils.py76
-rw-r--r--textutils.py14
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=','):