aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/docx/relationships_xml.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/mammoth/docx/relationships_xml.py b/mammoth/docx/relationships_xml.py
index 8bf3a89..c30c428 100644
--- a/mammoth/docx/relationships_xml.py
+++ b/mammoth/docx/relationships_xml.py
@@ -3,21 +3,33 @@ import collections
class Relationships(object):
def __init__(self, relationships):
- self._relationships = relationships
+ self._targets_by_id = dict(
+ (relationship.relationship_id, relationship.target)
+ for relationship in relationships
+ )
+ self._targets_by_type = collections.defaultdict(list)
+ for relationship in relationships:
+ self._targets_by_type[relationship.type].append(relationship.target)
def find_target_by_relationship_id(self, key):
- return self._relationships[key].target
+ return self._targets_by_id[key]
+
+ def find_targets_by_type(self, relationship_type):
+ return self._targets_by_type[relationship_type]
-Relationship = collections.namedtuple("Relationship", ["target"])
+Relationship = collections.namedtuple("Relationship", ["relationship_id", "target", "type"])
def read_relationships_xml_element(element):
children = element.find_children("relationships:Relationship")
- return Relationships(dict(map(_read_relationship, children)))
+ return Relationships(list(map(_read_relationship, children)))
def _read_relationship(element):
- relationship_id = element.attributes["Id"]
- relationship = Relationship(target=element.attributes["Target"])
- return relationship_id, relationship
+ relationship = Relationship(
+ relationship_id=element.attributes["Id"],
+ target=element.attributes["Target"],
+ type=element.attributes["Type"],
+ )
+ return relationship