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;
 |