DOCX Output: Fix unneccessary text styles being created by empty spans

This commit is contained in:
Kovid Goyal 2015-05-11 17:53:13 +05:30
parent a6fd56e752
commit 5776ae9e68

View File

@ -259,19 +259,30 @@ class TextStyle(DOCXStyle):
elif self.border_style != style: elif self.border_style != style:
self.border_style = ignore self.border_style = ignore
if self.padding in (None, ignore):
self.padding = 0
if self.border_width in (None, ignore):
self.border_width = 0
if self.border_style in (None, ignore):
self.border_style = 'none'
if self.border_color in (None, ignore):
self.border_color = 'auto'
if self.border_style == 'none':
self.border_width, self.border_color = 0, 'auto'
DOCXStyle.__init__(self, namespace) DOCXStyle.__init__(self, namespace)
def serialize_borders(self, bdr, normal_style): def serialize_borders(self, bdr, normal_style):
w = self.w w = self.w
is_normal_style = self is normal_style is_normal_style = self is normal_style
if is_normal_style or self.padding != normal_style.padding: if is_normal_style or self.padding != normal_style.padding:
bdr.set(w('space'), str(0 if self.padding in (None, ignore) else self.padding)) bdr.set(w('space'), str(self.padding))
if is_normal_style or self.border_width != normal_style.border_width: if is_normal_style or self.border_width != normal_style.border_width:
bdr.set(w('sz'), str(0 if self.border_width in (None, ignore) else self.border_width)) bdr.set(w('sz'), str(self.border_width))
if is_normal_style or self.border_style != normal_style.border_style: if is_normal_style or self.border_style != normal_style.border_style:
bdr.set(w('val'), 'none' if self.border_style in (None, ignore) else self.border_style) bdr.set(w('val'), self.border_style)
if is_normal_style or self.border_color != normal_style.border_color: if is_normal_style or self.border_color != normal_style.border_color:
bdr.set(w('color'), 'auto' if self.border_color in (None, ignore) else self.border_color) bdr.set(w('color'), self.border_color)
return bdr return bdr
def serialize(self, styles, normal_style): def serialize(self, styles, normal_style):