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():