diff options
| author | Michael Williamson <mike@zwobble.org> | 2018-01-19 19:52:53 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2018-01-19 19:52:53 +0000 |
| commit | dcca2c6ffe71e399caeeac6c2d44070c097a9cc5 (patch) | |
| tree | 1a40291eb0a62d61616645fbc2ea251d9c9e12d3 /mammoth/docx | |
| parent | 882f1aff778b56bbc15222baa0555616f8e102ac (diff) | |
Read relationship types
Diffstat (limited to 'mammoth/docx')
| -rw-r--r-- | mammoth/docx/relationships_xml.py | 26 |
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 |
