parent
a827b28f48
commit
96ceaf41f1
1 changed files with 20 additions and 2 deletions
22
secretary.py
22
secretary.py
|
|
@ -397,8 +397,9 @@ class Renderer(object):
|
|||
|
||||
def _unescape_entities(self, xml_text):
|
||||
"""
|
||||
Unescape '&', '<', '"' and '>' within jinja instructions.
|
||||
The regexs rules used here are compiled in _compile_escape_expressions.
|
||||
Unescape links and '&', '<', '"' and '>' within jinja
|
||||
instructions. The regexs rules used here are compiled in
|
||||
_compile_escape_expressions.
|
||||
"""
|
||||
for regexp, replacement in self.escape_map.items():
|
||||
while True:
|
||||
|
|
@ -406,6 +407,23 @@ class Renderer(object):
|
|||
if not substitutions:
|
||||
break
|
||||
|
||||
return self._unescape_links(xml_text)
|
||||
|
||||
def _unescape_links(self, xml_text):
|
||||
"""Fix Libreoffice auto escaping of xlink:href attribute values.
|
||||
This unescaping is only done on 'secretary' scheme URLs."""
|
||||
import urllib
|
||||
robj = re.compile(r'(?is)(xlink:href=\")secretary:(.*?)(\")')
|
||||
|
||||
def replacement(match):
|
||||
return ''.join([match.group(1), urllib.unquote(match.group(2)),
|
||||
match.group(3)])
|
||||
|
||||
while True:
|
||||
xml_text, rep = robj.subn(replacement, xml_text)
|
||||
if not rep:
|
||||
break
|
||||
|
||||
return xml_text
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue