Solved partially bug https://bugs.launchpad.net/appy/+bug/394258 (rendering of the content of style tags)
This commit is contained in:
parent
b4d2360d6f
commit
bdb220716c
3103
pod/test/Tests.rtf
3103
pod/test/Tests.rtf
File diff suppressed because it is too large
Load diff
16
pod/test/contexts/XhtmlWithStyle.py
Executable file
16
pod/test/contexts/XhtmlWithStyle.py
Executable file
|
@ -0,0 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
xhtmlInput = '''
|
||||
<p><meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title></title><meta name="GENERATOR" content="OpenOffice.org 3.0 (Win32)" /><style type="text/css">
|
||||
<!--
|
||||
@page { margin: 2cm }
|
||||
P { margin-bottom: 0.21cm }
|
||||
-->
|
||||
</style>
|
||||
<p>concepteurs de normes : membres des
|
||||
cabinets ministériels et les administrations.</p>
|
||||
<p><br /><br /></p>
|
||||
<p>Laurent, membre du cabinet du Ministre
|
||||
de l'énergie, doit rédiger un arrêté du Gouvernement wallon
|
||||
relatif à l'octroi d'une prime à l'isolation. Il peut télécharger
|
||||
le canevas typ</p>
|
||||
</p>'''
|
BIN
pod/test/results/xhmlIgnoreStyles.odt
Normal file
BIN
pod/test/results/xhmlIgnoreStyles.odt
Normal file
Binary file not shown.
|
@ -35,6 +35,7 @@ TABLE_CELL_TAGS = ('td', 'th')
|
|||
OUTER_TAGS = TABLE_CELL_TAGS + ('li',)
|
||||
NOT_INSIDE_P = ('table', 'ol', 'ul') # Those elements can't be rendered inside
|
||||
# paragraphs.
|
||||
IGNORABLE_TAGS = ('meta', 'title', 'style')
|
||||
HTML_ENTITIES = {
|
||||
'iexcl': '¡', 'cent': '¢', 'pound': '£', 'curren': '€', 'yen': '¥',
|
||||
'brvbar': 'Š', 'sect': '§', 'uml': '¨', 'copy':'©', 'ordf':'ª',
|
||||
|
@ -175,6 +176,8 @@ class XhtmlEnvironment(XmlEnvironment):
|
|||
self.textNs = ns[OdfEnvironment.NS_TEXT]
|
||||
self.linkNs = ns[OdfEnvironment.NS_XLINK]
|
||||
self.tableNs = ns[OdfEnvironment.NS_TABLE]
|
||||
self.ignore = False # Will be True when parsing parts of the XHTML that
|
||||
# must be ignored.
|
||||
|
||||
def getCurrentElement(self, isList=False):
|
||||
'''Gets the element that is on the top of self.currentElements or
|
||||
|
@ -413,6 +416,8 @@ class XhtmlParser(XmlParser):
|
|||
e.dumpString(' %s:number-columns-spanned="%s"' % \
|
||||
(e.tableNs, attrs['colspan']))
|
||||
e.dumpString('>')
|
||||
elif elem in IGNORABLE_TAGS:
|
||||
e.ignore = True
|
||||
|
||||
def endElement(self, elem):
|
||||
elem = self.lowerizeInput(elem)
|
||||
|
@ -439,12 +444,15 @@ class XhtmlParser(XmlParser):
|
|||
e.dumpString('</%s:table-row>' % e.tableNs)
|
||||
elif elem in TABLE_CELL_TAGS:
|
||||
e.dumpString('</%s:table-cell>' % e.tableNs)
|
||||
elif elem in IGNORABLE_TAGS:
|
||||
e.ignore = False
|
||||
if elemsToReopen:
|
||||
e.dumpString(elemsToReopen)
|
||||
|
||||
def characters(self, content):
|
||||
e = XmlParser.characters(self, content)
|
||||
e.currentContent += content
|
||||
if not e.ignore:
|
||||
e.currentContent += content
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
class Xhtml2OdtConverter:
|
||||
|
|
Loading…
Reference in a new issue