html-ellipsis
Version:
truncates a html string without messing up the tags
41 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractTag = extractTag;
exports.isEndTag = isEndTag;
exports.extractTagName = extractTagName;
exports.isVoidTag = isVoidTag;
/** taken from http://webdesign.about.com/od/htmltags/qt/html-void-elements.htm */
const voidTags = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'wbr'];
/**
* Extracts <tag id="foo"> from a larger string. Assumes str[startIdx] === '<'
*/
function extractTag(str, startIdx) {
const endIdx = str.indexOf('>', startIdx);
return str.slice(startIdx, endIdx + 1);
}
/** Checks that <tag> is an end tag */
function isEndTag(tag) {
return tag[1] === '/';
}
/** Extracts tag from <tag id="foo"> */
function extractTagName(tag) {
let tagNameEndIdx = tag.indexOf(' ');
if (tagNameEndIdx === -1) {
// check for <br/> style tags
tagNameEndIdx = tag.indexOf('/');
if (tagNameEndIdx === -1) {
tagNameEndIdx = tag.length - 1;
}
}
return tag.slice(1, tagNameEndIdx);
}
/** Checks that tagName is a void tag (it doesn't have an end tag) */
function isVoidTag(tagName) {
for (let i = voidTags.length - 1; i >= 0; --i) {
if (tagName === voidTags[i]) {
return true;
}
}
return false;
}
//# sourceMappingURL=tags.js.map