| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /**
- * @typedef Options
- * Configuration.
- * @property {boolean | null | undefined} [jsx=false]
- * Support JSX identifiers (default: `false`).
- */
- const startRe = /[$_\p{ID_Start}]/u
- const contRe = /[$_\u{200C}\u{200D}\p{ID_Continue}]/u
- const contReJsx = /[-$_\u{200C}\u{200D}\p{ID_Continue}]/u
- const nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u
- const nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u
- /** @type {Options} */
- const emptyOptions = {}
- /**
- * Checks if the given code point can start an identifier.
- *
- * @param {number | undefined} code
- * Code point to check.
- * @returns {boolean}
- * Whether `code` can start an identifier.
- */
- // Note: `undefined` is supported so you can pass the result from `''.codePointAt`.
- export function start(code) {
- return code ? startRe.test(String.fromCodePoint(code)) : false
- }
- /**
- * Checks if the given code point can continue an identifier.
- *
- * @param {number | undefined} code
- * Code point to check.
- * @param {Options | null | undefined} [options]
- * Configuration (optional).
- * @returns {boolean}
- * Whether `code` can continue an identifier.
- */
- // Note: `undefined` is supported so you can pass the result from `''.codePointAt`.
- export function cont(code, options) {
- const settings = options || emptyOptions
- const re = settings.jsx ? contReJsx : contRe
- return code ? re.test(String.fromCodePoint(code)) : false
- }
- /**
- * Checks if the given value is a valid identifier name.
- *
- * @param {string} name
- * Identifier to check.
- * @param {Options | null | undefined} [options]
- * Configuration (optional).
- * @returns {boolean}
- * Whether `name` can be an identifier.
- */
- export function name(name, options) {
- const settings = options || emptyOptions
- const re = settings.jsx ? nameReJsx : nameRe
- return re.test(name)
- }
|