Small fixes to list handling code
authorBrett Parker <iDunno@sommitrealweird.co.uk>
Sun, 2 Mar 2008 19:02:23 +0000 (19:02 +0000)
committerBrett Parker <iDunno@sommitrealweird.co.uk>
Sun, 2 Mar 2008 19:02:23 +0000 (19:02 +0000)
rss2maildir.py
tests/expected/definitionlist-badlyformed.txt
tests/expected/definitionlist-wellformed.txt
tests/expected/mixednestedlists-wellformed.txt

index 59e936117223d5dcac522abd14eadbf974f8ca8e..6a24b94edc40a119845ea24caad6859c3f7c4b88 100755 (executable)
@@ -197,6 +197,9 @@ class HTML2Text(HTMLParser):
                 self.listcount.append(1)
                 self.listlevel = len(self.listcount) - 1
 
+            if tag_name == u'dl':
+                self.indentlevel = self.indentlevel + 4
+
             if tag_name in self.liststarttags:
                 smallist = self.opentags[-3:-1]
                 smallist.reverse()
@@ -430,12 +433,12 @@ class HTML2Text(HTMLParser):
                 self.text = self.text + u'\n\n'
             elif len(self.text) > 1 and self.text[-2] != u'\n':
                 self.text = self.text + u'\n'
-            definition = u' ' * self.indentlevel + definition + "::"
-            indentstring = u'\n' + u' ' * (self.indentlevel + 1)
+            definition = u' ' * (self.indentlevel - 4) + definition + "::"
+            indentstring = u'\n' + u' ' * (self.indentlevel - 3)
             self.text = self.text \
                 + indentstring.join(
                     textwrap.wrap(definition, \
-                        self.textwidth - self.indentlevel - 1))
+                        self.textwidth - self.indentlevel - 4))
             self.curdata = u''
         elif tag_thats_done == u'dd':
             definition = unicode(" ".join( \
@@ -444,13 +447,13 @@ class HTML2Text(HTMLParser):
             if len(definition) > 0:
                 if len(self.text) > 0 and self.text[-1] != u'\n':
                     self.text = self.text + u'\n'
-                indentstring = u'\n' + u' ' * (self.indentlevel + 4)
+                indentstring = u'\n' + u' ' * self.indentlevel
                 self.text = self.text \
-                    + u' ' * (self.indentlevel + 4) \
+                    + indentstring \
                     + indentstring.join( \
                         textwrap.wrap( \
                             definition, \
-                            self.textwidth - self.indentlevel - 4 \
+                            self.textwidth - self.indentlevel \
                             ) \
                         )
                 self.curdata = u''
@@ -479,8 +482,11 @@ class HTML2Text(HTMLParser):
         if tag in [u'br', u'img']:
             return
 
+        if tag == u'dl':
+            self.indentlevel = self.indentlevel - 4
+
         if tag in self.liststarttags:
-            if tag in [u'ol', u'dl', u'ul']:
+            if tag in [u'ol', u'dl', u'ul', u'dd']:
                 self.handle_curdata()
                 # find if there was a previous list level
                 smalllist = self.opentags[:-1]
index 3d9e83f81d41fd5e4317941cea13930c83ae0807..0ec11bb92365bb6e52a01addd5a9ff3885dff738 100644 (file)
@@ -1,6 +1,8 @@
 An item::
+
     It's definition
 
 Another item::
+
     And it's got a much longer definition because we like to make sure
     that we've got the test wrapping right don't we.
index 3d9e83f81d41fd5e4317941cea13930c83ae0807..0ec11bb92365bb6e52a01addd5a9ff3885dff738 100644 (file)
@@ -1,6 +1,8 @@
 An item::
+
     It's definition
 
 Another item::
+
     And it's got a much longer definition because we like to make sure
     that we've got the test wrapping right don't we.
index 86e83fcc95c8e40f38d3d47cbb94213127fe528e..7ee5aa18708eff9a3d06b9d3491d1d926c7ee6c1 100644 (file)
@@ -5,15 +5,16 @@
         * We should have at least one silly long line to check that
           wrapping works like we expect otherwise what's the point
 
-   What is HTML2Text?::
+What is HTML2Text?::
 
-   HTML2Text is a funky bit of python that translates HTML fragments
-   in to plain text in a human readable format. It's primary use was
-   for generating the plain text body of email messages generated from
-   rssfeeds as part of rss2maildir.
+    HTML2Text is a funky bit of python that translates HTML fragments
+    in to plain text in a human readable format. It's primary use was
+    for generating the plain text body of email messages generated
+    from rssfeeds as part of rss2maildir.
 
-   Hopefully one day it'll be good enough that other people will want
-   to use it!
+    Hopefully one day it'll be good enough that other people will want
+    to use it!
 
-   Who wrote it?::
-       HTML2Text was written by Brett Parker.
+Who wrote it?::
+
+    HTML2Text was written by Brett Parker.