diff options
| author | Michael Williamson <mike@zwobble.org> | 2018-01-16 22:21:21 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2018-01-16 22:21:21 +0000 |
| commit | cc1b5b19480befc5611a469424a5ae16f9ebce21 (patch) | |
| tree | 4774f2cbbae87b2b723902d7154b171c2060db78 /lib/docx/relationships-reader.js | |
| parent | 062eb4ff3fea9c49cfce841327d01ddd0099264e (diff) | |
Read types of relationships
Diffstat (limited to 'lib/docx/relationships-reader.js')
| -rw-r--r-- | lib/docx/relationships-reader.js | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/lib/docx/relationships-reader.js b/lib/docx/relationships-reader.js index 93fc618..4db172e 100644 --- a/lib/docx/relationships-reader.js +++ b/lib/docx/relationships-reader.js @@ -1,14 +1,43 @@ exports.readRelationships = readRelationships; +exports.defaultValue = new Relationships([]); +exports.Relationships = Relationships; function readRelationships(element) { - var relationships = {}; + var relationships = []; element.children.forEach(function(child) { if (child.name === "{http://schemas.openxmlformats.org/package/2006/relationships}Relationship") { - relationships[child.attributes.Id] = { - target: child.attributes.Target + var relationship = { + relationshipId: child.attributes.Id, + target: child.attributes.Target, + type: child.attributes.Type }; + relationships.push(relationship); } }); - return relationships; + return new Relationships(relationships); +} + +function Relationships(relationships) { + var targetsByRelationshipId = {}; + relationships.forEach(function(relationship) { + targetsByRelationshipId[relationship.relationshipId] = relationship.target; + }); + + var targetsByType = {}; + relationships.forEach(function(relationship) { + if (!targetsByType[relationship.type]) { + targetsByType[relationship.type] = []; + } + targetsByType[relationship.type].push(relationship.target); + }); + + return { + findTargetByRelationshipId: function(relationshipId) { + return targetsByRelationshipId[relationshipId]; + }, + findTargetsByType: function(type) { + return targetsByType[type] || []; + } + }; } |
