@datawheel/canon-core
Version:
Reusable React environment and components for creating visualization engines.
25 lines (21 loc) • 609 B
JavaScript
// Internal list of HTML entities for escaping.
const entities = {
"&": "&",
"<": "<",
">": ">",
""": "\"",
"'": "'",
"`": "`",
" ": ""
};
const source = `(?:${ Object.keys(entities).join("|") })`;
const testRegexp = RegExp(source);
const replaceRegexp = RegExp(source, "g");
/**
* Converts html tags to spaces, then removes redundant spaces
*/
function stripHTML(n) {
const s = String(n).replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
return testRegexp.test(s) ? s.replace(replaceRegexp, match => entities[match]) : s;
}
module.exports = stripHTML;