[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