aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-05-18 20:12:25 +0100
committerMichael Williamson <mike@zwobble.org>2017-05-18 20:12:25 +0100
commitd0b4eb76001049a23fe038025cfa56472703fa70 (patch)
treeae48abeafbf170611e978d880447c5bb84d02e72 /mammoth
parent85f99611c84cf0853200fb358f135160c063b690 (diff)
Avoid parsing URI when replacing fragment
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/compat.py9
-rw-r--r--mammoth/docx/body_xml.py5
-rw-r--r--mammoth/docx/uris.py7
3 files changed, 9 insertions, 12 deletions
diff --git a/mammoth/compat.py b/mammoth/compat.py
deleted file mode 100644
index 5fb9acf..0000000
--- a/mammoth/compat.py
+++ /dev/null
@@ -1,9 +0,0 @@
-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 0724ac8..cc4e98f 100644
--- a/mammoth/docx/body_xml.py
+++ b/mammoth/docx/body_xml.py
@@ -4,11 +4,10 @@ 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
-from .uris import uri_to_zip_entry_name
+from .uris import replace_fragment, uri_to_zip_entry_name
def reader(
@@ -296,7 +295,7 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f
if relationship_id is not None:
href = relationships[relationship_id].target
if anchor is not None:
- href = urldefrag(href)[0] + "#" + anchor
+ href = replace_fragment(href, anchor)
return children_result.map(lambda children: documents.hyperlink(href=href, children=children))
elif anchor is not None:
diff --git a/mammoth/docx/uris.py b/mammoth/docx/uris.py
index 59f3ffe..892078e 100644
--- a/mammoth/docx/uris.py
+++ b/mammoth/docx/uris.py
@@ -3,3 +3,10 @@ def uri_to_zip_entry_name(base, uri):
return uri[1:]
else:
return base + "/" + uri
+
+
+def replace_fragment(uri, fragment):
+ hash_index = uri.find("#")
+ if hash_index != -1:
+ uri = uri[:hash_index]
+ return uri + "#" + fragment