merge with changes in master
This commit is contained in:
commit
24e4cb0ad3
2 changed files with 12 additions and 15 deletions
20
secretary.py
20
secretary.py
|
|
@ -320,14 +320,13 @@ class Renderer(object):
|
||||||
return xml_text
|
return xml_text
|
||||||
|
|
||||||
def _encode_escape_chars(self, xml_text):
|
def _encode_escape_chars(self, xml_text):
|
||||||
encode_rules = {
|
# Replace line feed and/or tabs within text span entities.
|
||||||
'(?i)(<text:(?:[ahp]|ruby-base|span|meta|meta-field)>.*)(\n)(.*</text:(?:[ahp]|ruby-base|span|meta|meta-field)>)': r'\1<text:line-break/>\3',
|
find_pattern = r'(?is)<text:([\S]+?)>([^>]*?([\n|\t])[^<]*?)</text:\1>'
|
||||||
'(?i)(<text:(?:[ahp]|ruby-base|span|meta|meta-field)>.*)(\u0009)(.*</text:(?:[ahp]|ruby-base|span|meta|meta-field)>)': r'\1<text:tab>\3',
|
for m in re.findall(find_pattern, xml_text):
|
||||||
'(?i)[\u0009|\u000d|\u000a](?:(?![</?|>]))': '<text:s/>'
|
print(m[1])
|
||||||
}
|
replacement = m[1].replace('\n', '<text:line-break/>')
|
||||||
|
replacement = replacement.replace('\t', '<text:tab/>')
|
||||||
for p, r in encode_rules.items():
|
xml_text = xml_text.replace(m[1], replacement)
|
||||||
xml_text = re.sub(p, r, xml_text)
|
|
||||||
|
|
||||||
return xml_text
|
return xml_text
|
||||||
|
|
||||||
|
|
@ -455,10 +454,9 @@ class Renderer(object):
|
||||||
return final_xml
|
return final_xml
|
||||||
|
|
||||||
except:
|
except:
|
||||||
self.log.debug('Error rendering template:\n%s',
|
self.log.error('Error rendering template:\n%s',
|
||||||
xml_document.toprettyxml())
|
xml_document.toprettyxml(), exc_info=True)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
self.log.debug('Rendering xml object finished')
|
self.log.debug('Rendering xml object finished')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,12 +45,11 @@ class RenderTestCase(TestCase):
|
||||||
'<text:a>\n</text:a>': '<text:a><text:line-break/></text:a>',
|
'<text:a>\n</text:a>': '<text:a><text:line-break/></text:a>',
|
||||||
'<text:h>\n</text:h>': '<text:h><text:line-break/></text:h>',
|
'<text:h>\n</text:h>': '<text:h><text:line-break/></text:h>',
|
||||||
'<text:p>\n</text:p>': '<text:p><text:line-break/></text:p>',
|
'<text:p>\n</text:p>': '<text:p><text:line-break/></text:p>',
|
||||||
|
'<text:p>Hello\n</text:p>': '<text:p>Hello<text:line-break/></text:p>',
|
||||||
|
'<text:p>Hello\nWorld\n!</text:p>': '<text:p>Hello<text:line-break/>World<text:line-break/>!</text:p>',
|
||||||
'<text:ruby-base>\n</text:ruby-base>': '<text:ruby-base><text:line-break/></text:ruby-base>',
|
'<text:ruby-base>\n</text:ruby-base>': '<text:ruby-base><text:line-break/></text:ruby-base>',
|
||||||
'<text:meta>\u0009</text:meta>': '<text:meta><text:tab></text:meta>',
|
'<text:meta>\u0009</text:meta>': '<text:meta><text:tab/></text:meta>',
|
||||||
'<text:meta-field>\n</text:meta-field>': '<text:meta-field><text:line-break/></text:meta-field>',
|
'<text:meta-field>\n</text:meta-field>': '<text:meta-field><text:line-break/></text:meta-field>',
|
||||||
'\u0009': '<text:s/>',
|
|
||||||
'\u000d': '<text:s/>',
|
|
||||||
'\u000a': '<text:s/>',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for test, expect in test_samples.items():
|
for test, expect in test_samples.items():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue