123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import {decodeNamedCharacterReference} from 'decode-named-character-reference'
- import {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'
- const characterEscapeOrReference =
- /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi
- export function decodeString(value) {
- return value.replace(characterEscapeOrReference, decode)
- }
- function decode($0, $1, $2) {
- if ($1) {
-
- return $1
- }
-
- const head = $2.charCodeAt(0)
- if (head === 35) {
- const head = $2.charCodeAt(1)
- const hex = head === 120 || head === 88
- return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)
- }
- return decodeNamedCharacterReference($2) || $0
- }
|