mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix whitespace handling when creating <w:t> elements
This commit is contained in:
parent
c9f6eb7b17
commit
6cc3b82729
@ -6,6 +6,8 @@ from __future__ import (unicode_literals, division, absolute_import,
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
|
||||||
from calibre.ebooks.docx.writer.utils import convert_color, int_or_zero
|
from calibre.ebooks.docx.writer.utils import convert_color, int_or_zero
|
||||||
@ -91,11 +93,21 @@ class LineBreak(object):
|
|||||||
|
|
||||||
class TextRun(object):
|
class TextRun(object):
|
||||||
|
|
||||||
|
ws_pat = None
|
||||||
|
|
||||||
def __init__(self, style):
|
def __init__(self, style):
|
||||||
|
if self.ws_pat is None:
|
||||||
|
TextRun.ws_pat = self.ws_pat = re.compile(r'\s+')
|
||||||
self.style = style
|
self.style = style
|
||||||
self.texts = []
|
self.texts = []
|
||||||
|
|
||||||
def add_text(self, text, preserve_whitespace):
|
def add_text(self, text, preserve_whitespace):
|
||||||
|
if not preserve_whitespace:
|
||||||
|
text = self.ws_pat.sub(' ', text)
|
||||||
|
if text.strip() != text:
|
||||||
|
# If preserve_whitespace is False, Word ignores leading and
|
||||||
|
# trailing whitespace
|
||||||
|
preserve_whitespace = True
|
||||||
self.texts.append((text, preserve_whitespace))
|
self.texts.append((text, preserve_whitespace))
|
||||||
|
|
||||||
def add_break(self, clear='none'):
|
def add_break(self, clear='none'):
|
||||||
@ -188,5 +200,3 @@ class Convert(object):
|
|||||||
|
|
||||||
if html_child.tail:
|
if html_child.tail:
|
||||||
docx_block.add_text(html_child.tail, stylizer.style(html_child.getparent()))
|
docx_block.add_text(html_child.tail, stylizer.style(html_child.getparent()))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user