unicode.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.SEQUENCES = exports.CODE_POINTS = exports.REPLACEMENT_CHARACTER = void 0;
  4. exports.isSurrogate = isSurrogate;
  5. exports.isSurrogatePair = isSurrogatePair;
  6. exports.getSurrogatePairCodePoint = getSurrogatePairCodePoint;
  7. exports.isControlCodePoint = isControlCodePoint;
  8. exports.isUndefinedCodePoint = isUndefinedCodePoint;
  9. const UNDEFINED_CODE_POINTS = new Set([
  10. 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,
  11. 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,
  12. 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,
  13. 1048575, 1114110, 1114111,
  14. ]);
  15. exports.REPLACEMENT_CHARACTER = '\uFFFD';
  16. var CODE_POINTS;
  17. (function (CODE_POINTS) {
  18. CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF";
  19. CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL";
  20. CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION";
  21. CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN";
  22. CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED";
  23. CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED";
  24. CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE";
  25. CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
  26. CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
  27. CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND";
  28. CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE";
  29. CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
  30. CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS";
  31. CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0";
  32. CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9";
  33. CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON";
  34. CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN";
  35. CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN";
  36. CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
  37. CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK";
  38. CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
  39. CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
  40. CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
  41. CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
  42. CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
  43. CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
  44. })(CODE_POINTS || (exports.CODE_POINTS = CODE_POINTS = {}));
  45. exports.SEQUENCES = {
  46. DASH_DASH: '--',
  47. CDATA_START: '[CDATA[',
  48. DOCTYPE: 'doctype',
  49. SCRIPT: 'script',
  50. PUBLIC: 'public',
  51. SYSTEM: 'system',
  52. };
  53. //Surrogates
  54. function isSurrogate(cp) {
  55. return cp >= 55296 && cp <= 57343;
  56. }
  57. function isSurrogatePair(cp) {
  58. return cp >= 56320 && cp <= 57343;
  59. }
  60. function getSurrogatePairCodePoint(cp1, cp2) {
  61. return (cp1 - 55296) * 1024 + 9216 + cp2;
  62. }
  63. //NOTE: excluding NULL and ASCII whitespace
  64. function isControlCodePoint(cp) {
  65. return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||
  66. (cp >= 0x7f && cp <= 0x9f));
  67. }
  68. function isUndefinedCodePoint(cp) {
  69. return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);
  70. }