diff --git a/secretary.py b/secretary.py index 798d27f..b32bede 100644 --- a/secretary.py +++ b/secretary.py @@ -320,14 +320,13 @@ class Renderer(object): return xml_text def _encode_escape_chars(self, xml_text): - encode_rules = { - '(?i)(.*)(\n)(.*)': r'\1\3', - '(?i)(.*)(\u0009)(.*)': r'\1\3', - '(?i)[\u0009|\u000d|\u000a](?:(?![]))': '' - } - - for p, r in encode_rules.items(): - xml_text = re.sub(p, r, xml_text) + # Replace line feed and/or tabs within text span entities. + find_pattern = r'(?is)([^>]*?([\n|\t])[^<]*?)' + for m in re.findall(find_pattern, xml_text): + print(m[1]) + replacement = m[1].replace('\n', '') + replacement = replacement.replace('\t', '') + xml_text = xml_text.replace(m[1], replacement) return xml_text @@ -455,10 +454,9 @@ class Renderer(object): return final_xml except: - self.log.debug('Error rendering template:\n%s', - xml_document.toprettyxml()) + self.log.error('Error rendering template:\n%s', + xml_document.toprettyxml(), exc_info=True) raise - finally: self.log.debug('Rendering xml object finished') diff --git a/test_secretary.py b/test_secretary.py index c95824a..766a971 100644 --- a/test_secretary.py +++ b/test_secretary.py @@ -45,12 +45,11 @@ class RenderTestCase(TestCase): '\n': '', '\n': '', '\n': '', + 'Hello\n': 'Hello', + 'Hello\nWorld\n!': 'HelloWorld!', '\n': '', - '\u0009': '', + '\u0009': '', '\n': '', - '\u0009': '', - '\u000d': '', - '\u000a': '', } for test, expect in test_samples.items():