CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
to-named.js58 linesDownload Raw Back to util
1import {characterEntitiesLegacy} from 'character-entities-legacy'2import {characterEntitiesHtml4} from 'character-entities-html4'3import {dangerous} from '../constant/dangerous.js'4 5const own = {}.hasOwnProperty6 7/**8 * `characterEntitiesHtml4` but inverted.9 *10 * @type {Record<string, string>}11 */12const characters = {}13 14/** @type {string} */15let key16 17for (key in characterEntitiesHtml4) {18  if (own.call(characterEntitiesHtml4, key)) {19    characters[characterEntitiesHtml4[key]] = key20  }21}22 23const notAlphanumericRegex = /[^\dA-Za-z]/24 25/**26 * Configurable ways to encode characters as named references.27 *28 * @param {number} code29 * @param {number} next30 * @param {boolean|undefined} omit31 * @param {boolean|undefined} attribute32 * @returns {string}33 */34export function toNamed(code, next, omit, attribute) {35  const character = String.fromCharCode(code)36 37  if (own.call(characters, character)) {38    const name = characters[character]39    const value = '&' + name40 41    if (42      omit &&43      characterEntitiesLegacy.includes(name) &&44      !dangerous.includes(name) &&45      (!attribute ||46        (next &&47          next !== 61 /* `=` */ &&48          notAlphanumericRegex.test(String.fromCharCode(next))))49    ) {50      return value51    }52 53    return value + ';'54  }55 56  return ''57}58