freeCodeCamp/client/utils/decodeHTMLEntities.js

28 lines
888 B
JavaScript
Raw Normal View History

/*
* Converts HTML entity codes in a string to the characters they represent.
*
* Example:
* `decodeHTMLEntities('Beets & carrots');`
* will return "Beets & carrots".
*
* The regex makes sure we only replace the HTML entities in the string.
* For example, the regex would match "<" as well as ":".
* The decoding works by setting the innerHTML of a dummy element and then
* retrieving the innerText. Per the spec, innerText is a property that
* represents the "rendered" text content of an element.
*
* See:
* https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText
* https://developer.mozilla.org/en-US/docs/Glossary/Entity
*
*/
const decodeHTMLEntities = str => {
const el = document.createElement('div');
return str.replace(/&[#0-9a-z]+;/gi, enc => {
el.innerHTML = enc;
return el.innerText;
});
};
export default decodeHTMLEntities;