Skip to content

Commit

Permalink
Read target frame on hyperlinks
Browse files Browse the repository at this point in the history
  • Loading branch information
mwilliamson committed May 30, 2017
1 parent 9cc065c commit a966168
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
3 changes: 2 additions & 1 deletion lib/documents.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@ function Hyperlink(children, options) {
type: types.hyperlink,
children: children,
href: options.href,
anchor: options.anchor
anchor: options.anchor,
targetFrame: options.targetFrame
};
}

Expand Down
13 changes: 11 additions & 2 deletions lib/docx/body-reader.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,23 @@ function BodyReader(options) {
var relationshipId = element.attributes["r:id"];
var anchor = element.attributes["w:anchor"];
return readXmlElements(element.children).map(function(children) {
function create(options) {
var targetFrame = element.attributes["w:tgtFrame"];

return new documents.Hyperlink(
children,
_.extend({targetFrame: targetFrame}, options)
);
}

if (relationshipId) {
var href = relationships[relationshipId].target;
if (anchor) {
href = uris.replaceFragment(href, anchor);
}
return new documents.Hyperlink(children, {href: href});
return create({href: href});
} else if (anchor) {
return new documents.Hyperlink(children, {anchor: anchor});
return create({anchor: anchor});
} else {
return children;
}
Expand Down
11 changes: 10 additions & 1 deletion test/docx/body-reader.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -945,7 +945,16 @@ test("w:hyperlink", {
var hyperlinkXml = new XmlElement("w:hyperlink", {}, [runXml]);
var result = readXmlElement(hyperlinkXml);
assert.deepEqual(result.value[0].type, "run");
}
},

"target frame is read": function() {
var hyperlinkXml = new XmlElement("w:hyperlink", {
"w:anchor": "Introduction",
"w:tgtFrame": "_blank"
});
var result = readXmlElementValue(hyperlinkXml);
assertThat(result, hasProperties({targetFrame: "_blank"}));
},
});

test("w:br without explicit type is read as line break", function() {
Expand Down

0 comments on commit a966168

Please sign in to comment.