28 lines
		
	
	
		
			888 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			888 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  * 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;
 |