Slightly re-factor setting of the link target in addLinkAttributes

I happened to look at this code and the way that the link target is set seems unecessarily convoluted, since we're using `Object.values` and `Array.prototype.includes` for *every* link being parsed.
Given that the number of link targets are so few, the easist solution honestly seem to be to just use a `switch` statement to do the link target mapping.
This commit is contained in:
Jonas Jenwald 2019-11-02 14:01:31 +01:00
parent bbd2386bd9
commit fec1f02b2a

View File

@ -326,14 +326,6 @@ const LinkTarget = {
TOP: 4,
};
const LinkTargetStringMap = [
'',
'_self',
'_blank',
'_parent',
'_top',
];
/**
* @typedef ExternalLinkParameters
* @typedef {Object} ExternalLinkParameters
@ -366,10 +358,24 @@ function addLinkAttributes(link, { url, target, rel, enabled = true, } = {}) {
};
}
const LinkTargetValues = Object.values(LinkTarget);
const targetIndex =
LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
link.target = LinkTargetStringMap[targetIndex];
let targetStr = ''; // LinkTarget.NONE
switch (target) {
case LinkTarget.NONE:
break;
case LinkTarget.SELF:
targetStr = '_self';
break;
case LinkTarget.BLANK:
targetStr = '_blank';
break;
case LinkTarget.PARENT:
targetStr = '_parent';
break;
case LinkTarget.TOP:
targetStr = '_top';
break;
}
link.target = targetStr;
link.rel = (typeof rel === 'string' ? rel : DEFAULT_LINK_REL);
}