characterClasses.mjs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * ```
  3. * WhiteSpace ::
  4. * - "Horizontal Tab (U+0009)"
  5. * - "Space (U+0020)"
  6. * ```
  7. * @internal
  8. */
  9. export function isWhiteSpace(code) {
  10. return code === 0x0009 || code === 0x0020;
  11. }
  12. /**
  13. * ```
  14. * Digit :: one of
  15. * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`
  16. * ```
  17. * @internal
  18. */
  19. export function isDigit(code) {
  20. return code >= 0x0030 && code <= 0x0039;
  21. }
  22. /**
  23. * ```
  24. * Letter :: one of
  25. * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`
  26. * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`
  27. * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`
  28. * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`
  29. * ```
  30. * @internal
  31. */
  32. export function isLetter(code) {
  33. return (
  34. (code >= 0x0061 && code <= 0x007a) || // A-Z
  35. (code >= 0x0041 && code <= 0x005a) // a-z
  36. );
  37. }
  38. /**
  39. * ```
  40. * NameStart ::
  41. * - Letter
  42. * - `_`
  43. * ```
  44. * @internal
  45. */
  46. export function isNameStart(code) {
  47. return isLetter(code) || code === 0x005f;
  48. }
  49. /**
  50. * ```
  51. * NameContinue ::
  52. * - Letter
  53. * - Digit
  54. * - `_`
  55. * ```
  56. * @internal
  57. */
  58. export function isNameContinue(code) {
  59. return isLetter(code) || isDigit(code) || code === 0x005f;
  60. }