[Erp5-report] r41267 hugo.maia - in /erp5/trunk/utils/cloudooo/cloudooo: granulate/ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Dec 9 13:27:51 CET 2010


Author: hugo.maia
Date: Thu Dec  9 13:27:50 2010
New Revision: 41267

URL: http://svn.erp5.org?rev=41267&view=rev
Log:
Refactor eliminating _relevantParagraphList

Modified:
    erp5/trunk/utils/cloudooo/cloudooo/granulate/oogranulate.py
    erp5/trunk/utils/cloudooo/cloudooo/tests/testOOGranulate.py

Modified: erp5/trunk/utils/cloudooo/cloudooo/granulate/oogranulate.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/granulate/oogranulate.py?rev=41267&r1=41266&r2=41267&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/granulate/oogranulate.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/granulate/oogranulate.py [utf8] Thu Dec  9 13:27:50 2010
@@ -42,17 +42,6 @@ class OOGranulate(object):
   def __init__(self, file, source_format):
     self.document = OdfDocument(file, source_format)
 
-  def _relevantParagraphList(self):
-    """Returns a list with the relevants lxml.etree._Element 'p' tags of
-    self.document.parsed_content. It exclude the 'p' inside 'draw:frame'."""
-    # XXX: this algorithm could be improved to not iterate with the file twice
-    #      and probably get all relevant paragraph list by a single xpath call
-    all_p_list = self.document.parsed_content.xpath('//text:p',
-                                namespaces=self.document.parsed_content.nsmap)
-    draw_p_list = self.document.parsed_content.xpath('//draw:frame//text:p',
-                                namespaces=self.document.parsed_content.nsmap)
-    return [x for x in all_p_list if x not in draw_p_list]
-
   def getTableItemList(self, file):
     """Returns the list of table IDs in the form of (id, title)."""
     raise NotImplementedError
@@ -88,9 +77,12 @@ class OOGranulate(object):
     """Returns the list of paragraphs in the form of (id, class) where class
     may have special meaning to define TOC/TOI."""
     key = '{urn:oasis:names:tc:opendocument:xmlns:text:1.0}style-name'
+    relevant_paragraph_list = self.document.parsed_content.xpath(
+                                '//text:p[not(ancestor::draw:frame)]',
+                                namespaces=self.document.parsed_content.nsmap)
     id = 0
     paragraph_list = []
-    for p in self._relevantParagraphList():
+    for p in relevant_paragraph_list:
       paragraph_list.append((id, p.attrib[key]))
       id += 1
     return paragraph_list
@@ -98,7 +90,10 @@ class OOGranulate(object):
   def getParagraphItem(self, paragraph_id):
     """Returns the paragraph in the form of (text, class)."""
     try:
-      paragraph = self._relevantParagraphList()[paragraph_id]
+      relevant_paragraph_list = self.document.parsed_content.xpath(
+                                '//text:p[not(ancestor::draw:frame)]',
+                                namespaces=self.document.parsed_content.nsmap)
+      paragraph = relevant_paragraph_list[paragraph_id]
       text = ''.join(paragraph.xpath('.//text()', namespaces=paragraph.nsmap))
       key = '{urn:oasis:names:tc:opendocument:xmlns:text:1.0}style-name'
       p_class = paragraph.attrib[key]

Modified: erp5/trunk/utils/cloudooo/cloudooo/tests/testOOGranulate.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/tests/testOOGranulate.py?rev=41267&r1=41266&r2=41267&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/tests/testOOGranulate.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/tests/testOOGranulate.py [utf8] Thu Dec  9 13:27:50 2010
@@ -84,14 +84,6 @@ class TestOOGranulate(cloudoooTestCase):
     obtained_image = self.oogranulate.getImage('anything.png')
     self.assertEquals('', obtained_image)
 
-  def testRelevantParagraphList(self):
-    """Test if _relevantParagraphList returns a list with 'p' excluding the 'p'
-    inside 'draw:frame'"""
-    draw_p_list = self.oogranulate.document.parsed_content.xpath(
-                    '//draw:frame//text:p',
-                    namespaces=self.oogranulate.document.parsed_content.nsmap)
-    self.assertTrue(draw_p_list not in self.oogranulate._relevantParagraphList())
-
   def testGetParagraphItemList(self):
     """Test if getParagraphItemList() returns the right paragraphs list, with
     the ids always in the same order"""



More information about the Erp5-report mailing list