chore(learn): Merge learn in to the client app
This commit is contained in:
27
client/utils/decodeHTMLEntities.js
Normal file
27
client/utils/decodeHTMLEntities.js
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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;
|
Reference in New Issue
Block a user