From d76c1d136006d3b1390de60dfed6b7d66a2121ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20Ram=C3=ADrez?= Date: Sun, 17 Aug 2014 19:32:33 -0600 Subject: [PATCH] This fix #8. --- secretary.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/secretary.py b/secretary.py index a481131..f6bc147 100644 --- a/secretary.py +++ b/secretary.py @@ -297,14 +297,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 @@ -320,13 +319,17 @@ class Renderer(object): result = jinja_template.render(**kwargs) result = self._encode_escape_chars(result) - return parseString(result.encode('ascii', 'xmlcharrefreplace')) + try: + return parseString(result.encode('ascii', 'xmlcharrefreplace')) + except: + self.log.error('Error parsing XML result:\n%s', result, + exc_info=True) + raise 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')