node/tools/eslint/node_modules/micromark/lib/util/safe-from-int.mjs
Michaël Zasso 2eff28fb7a
tools: move ESLint to tools/eslint
Greatly simplify how ESLint and its plugins are installed.

PR-URL: https://github.com/nodejs/node/pull/53413
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2024-06-19 19:54:08 +00:00

31 lines
830 B
JavaScript

export default safeFromInt
import codes from '../character/codes.mjs'
import values from '../character/values.mjs'
import fromCharCode from '../constant/from-char-code.mjs'
function safeFromInt(value, base) {
var code = parseInt(value, base)
if (
// C0 except for HT, LF, FF, CR, space
code < codes.ht ||
code === codes.vt ||
(code > codes.cr && code < codes.space) ||
// Control character (DEL) of the basic block and C1 controls.
(code > codes.tilde && code < 160) ||
// Lone high surrogates and low surrogates.
(code > 55295 && code < 57344) ||
// Noncharacters.
(code > 64975 && code < 65008) ||
(code & 65535) === 65535 ||
(code & 65535) === 65534 ||
// Out of range
code > 1114111
) {
return values.replacementCharacter
}
return fromCharCode(code)
}