From 85f99611c84cf0853200fb358f135160c063b690 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 18 May 2017 19:52:04 +0100 Subject: Add anchor on hyperlinks as fragment if present --- mammoth/compat.py | 9 +++++++++ mammoth/docx/body_xml.py | 4 ++++ 2 files changed, 13 insertions(+) create mode 100644 mammoth/compat.py (limited to 'mammoth') diff --git a/mammoth/compat.py b/mammoth/compat.py new file mode 100644 index 0000000..5fb9acf --- /dev/null +++ b/mammoth/compat.py @@ -0,0 +1,9 @@ +import sys + +if sys.version_info < (3, ): + from urlparse import urldefrag +else: + from urllib.parse import urldefrag + + +__all__ = ["urldefrag"] diff --git a/mammoth/docx/body_xml.py b/mammoth/docx/body_xml.py index b8d94cf..0724ac8 100644 --- a/mammoth/docx/body_xml.py +++ b/mammoth/docx/body_xml.py @@ -4,6 +4,7 @@ import re from .. import documents from .. import results from .. import lists +from ..compat import urldefrag from . import complex_fields from .xmlparser import node_types, XmlElement from .styles_xml import Styles @@ -294,6 +295,9 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f children_result = _read_xml_elements(element.children) if relationship_id is not None: href = relationships[relationship_id].target + if anchor is not None: + href = urldefrag(href)[0] + "#" + anchor + return children_result.map(lambda children: documents.hyperlink(href=href, children=children)) elif anchor is not None: return children_result.map(lambda children: documents.hyperlink(anchor=anchor, children=children)) -- cgit v1.2.3