| 1234567891011121314151617181920212223242526272829303132 |
- /// <reference lib="dom" />
- /* global document */
- const element = document.createElement('i')
- /**
- * @param {string} value
- * @returns {string | false}
- */
- export function decodeNamedCharacterReference(value) {
- const characterReference = '&' + value + ';'
- element.innerHTML = characterReference
- const character = element.textContent
- // Some named character references do not require the closing semicolon
- // (`¬`, for instance), which leads to situations where parsing the assumed
- // named reference of `¬it;` will result in the string `¬it;`.
- // When we encounter a trailing semicolon after parsing, and the character
- // reference to decode was not a semicolon (`;`), we can assume that the
- // matching was not complete.
- if (
- character.charCodeAt(character.length - 1) === 59 /* `;` */ &&
- value !== 'semi'
- ) {
- return false
- }
- // If the decoded string is equal to the input, the character reference was
- // not valid.
- return character === characterReference ? false : character
- }
|