util.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.escapeAttrValue = escapeAttrValue;
  6. exports.escapeText = escapeText;
  7. exports.sortByLoc = sortByLoc;
  8. const ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;
  9. const ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');
  10. const TEXT_REGEX_TEST = /[\xA0&<>]/;
  11. const TEXT_REGEX_REPLACE = new RegExp(TEXT_REGEX_TEST.source, 'g');
  12. function attrValueReplacer(char) {
  13. switch (char.charCodeAt(0)) {
  14. case 160
  15. /* NBSP */
  16. :
  17. return '&nbsp;';
  18. case 34
  19. /* QUOT */
  20. :
  21. return '&quot;';
  22. case 38
  23. /* AMP */
  24. :
  25. return '&amp;';
  26. default:
  27. return char;
  28. }
  29. }
  30. function textReplacer(char) {
  31. switch (char.charCodeAt(0)) {
  32. case 160
  33. /* NBSP */
  34. :
  35. return '&nbsp;';
  36. case 38
  37. /* AMP */
  38. :
  39. return '&amp;';
  40. case 60
  41. /* LT */
  42. :
  43. return '&lt;';
  44. case 62
  45. /* GT */
  46. :
  47. return '&gt;';
  48. default:
  49. return char;
  50. }
  51. }
  52. function escapeAttrValue(attrValue) {
  53. if (ATTR_VALUE_REGEX_TEST.test(attrValue)) {
  54. return attrValue.replace(ATTR_VALUE_REGEX_REPLACE, attrValueReplacer);
  55. }
  56. return attrValue;
  57. }
  58. function escapeText(text) {
  59. if (TEXT_REGEX_TEST.test(text)) {
  60. return text.replace(TEXT_REGEX_REPLACE, textReplacer);
  61. }
  62. return text;
  63. }
  64. function sortByLoc(a, b) {
  65. // If either is invisible, don't try to order them
  66. if (a.loc.isInvisible || b.loc.isInvisible) {
  67. return 0;
  68. }
  69. if (a.loc.startPosition.line < b.loc.startPosition.line) {
  70. return -1;
  71. }
  72. if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column < b.loc.startPosition.column) {
  73. return -1;
  74. }
  75. if (a.loc.startPosition.line === b.loc.startPosition.line && a.loc.startPosition.column === b.loc.startPosition.column) {
  76. return 0;
  77. }
  78. return 1;
  79. }
  80. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvZ2VuZXJhdGlvbi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBVUEsTUFBTSxxQkFBcUIsR0FBM0IsVUFBQTtBQUNBLE1BQU0sd0JBQXdCLEdBQUcsSUFBQSxNQUFBLENBQVcscUJBQXFCLENBQWhDLE1BQUEsRUFBakMsR0FBaUMsQ0FBakM7QUFFQSxNQUFNLGVBQWUsR0FBckIsV0FBQTtBQUNBLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSxNQUFBLENBQVcsZUFBZSxDQUExQixNQUFBLEVBQTNCLEdBQTJCLENBQTNCOztBQUVBLFNBQUEsaUJBQUEsQ0FBQSxJQUFBLEVBQXVDO0FBQ3JDLFVBQVEsSUFBSSxDQUFKLFVBQUEsQ0FBUixDQUFRLENBQVI7QUFDRSxTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsUUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsUUFBQTs7QUFDRixTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsT0FBQTs7QUFDRjtBQUNFLGFBQUEsSUFBQTtBQVJKO0FBVUQ7O0FBRUQsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUFrQztBQUNoQyxVQUFRLElBQUksQ0FBSixVQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFFBQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE9BQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE1BQUE7O0FBQ0YsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLE1BQUE7O0FBQ0Y7QUFDRSxhQUFBLElBQUE7QUFWSjtBQVlEOztBQUVLLFNBQUEsZUFBQSxDQUFBLFNBQUEsRUFBMkM7QUFDL0MsTUFBSSxxQkFBcUIsQ0FBckIsSUFBQSxDQUFKLFNBQUksQ0FBSixFQUEyQztBQUN6QyxXQUFPLFNBQVMsQ0FBVCxPQUFBLENBQUEsd0JBQUEsRUFBUCxpQkFBTyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBQSxTQUFBO0FBQ0Q7O0FBRUssU0FBQSxVQUFBLENBQUEsSUFBQSxFQUFpQztBQUNyQyxNQUFJLGVBQWUsQ0FBZixJQUFBLENBQUosSUFBSSxDQUFKLEVBQWdDO0FBQzlCLFdBQU8sSUFBSSxDQUFKLE9BQUEsQ0FBQSxrQkFBQSxFQUFQLFlBQU8sQ0FBUDtBQUNEOztBQUNELFNBQUEsSUFBQTtBQUNEOztBQUVLLFNBQUEsU0FBQSxDQUFBLENBQUEsRUFBQSxDQUFBLEVBQWdEO0FBQ3BEO0FBQ0EsTUFBSSxDQUFDLENBQUQsR0FBQSxDQUFBLFdBQUEsSUFBcUIsQ0FBQyxDQUFELEdBQUEsQ0FBekIsV0FBQSxFQUE0QztBQUMxQyxXQUFBLENBQUE7QUFDRDs7QUFFRCxNQUFJLENBQUMsQ0FBRCxHQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsR0FBMkIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxhQUFBLENBQS9CLElBQUEsRUFBeUQ7QUFDdkQsV0FBTyxDQUFQLENBQUE7QUFDRDs7QUFFRCxNQUNFLENBQUMsQ0FBRCxHQUFBLENBQUEsYUFBQSxDQUFBLElBQUEsS0FBNkIsQ0FBQyxDQUFELEdBQUEsQ0FBQSxhQUFBLENBQTdCLElBQUEsSUFDQSxDQUFDLENBQUQsR0FBQSxDQUFBLGFBQUEsQ0FBQSxNQUFBLEdBQTZCLENBQUMsQ0FBRCxHQUFBLENBQUEsYUFBQSxDQUYvQixNQUFBLEVBR0U7QUFDQSxXQUFPLENBQVAsQ0FBQTtBQUNEOztBQUVELE1BQ0UsQ0FBQyxDQUFELEdBQUEsQ0FBQSxhQUFBLENBQUEsSUFBQSxLQUE2QixDQUFDLENBQUQsR0FBQSxDQUFBLGFBQUEsQ0FBN0IsSUFBQSxJQUNBLENBQUMsQ0FBRCxHQUFBLENBQUEsYUFBQSxDQUFBLE1BQUEsS0FBK0IsQ0FBQyxDQUFELEdBQUEsQ0FBQSxhQUFBLENBRmpDLE1BQUEsRUFHRTtBQUNBLFdBQUEsQ0FBQTtBQUNEOztBQUVELFNBQUEsQ0FBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcblxuY29uc3QgZW51bSBDaGFyIHtcbiAgTkJTUCA9IDB4YTAsXG4gIFFVT1QgPSAweDIyLFxuICBMVCA9IDB4M2MsXG4gIEdUID0gMHgzZSxcbiAgQU1QID0gMHgyNixcbn1cblxuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9URVNUID0gL1tcXHhBMFwiJl0vO1xuY29uc3QgQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFID0gbmV3IFJlZ0V4cChBVFRSX1ZBTFVFX1JFR0VYX1RFU1Quc291cmNlLCAnZycpO1xuXG5jb25zdCBURVhUX1JFR0VYX1RFU1QgPSAvW1xceEEwJjw+XS87XG5jb25zdCBURVhUX1JFR0VYX1JFUExBQ0UgPSBuZXcgUmVnRXhwKFRFWFRfUkVHRVhfVEVTVC5zb3VyY2UsICdnJyk7XG5cbmZ1bmN0aW9uIGF0dHJWYWx1ZVJlcGxhY2VyKGNoYXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoY2hhci5jaGFyQ29kZUF0KDApKSB7XG4gICAgY2FzZSBDaGFyLk5CU1A6XG4gICAgICByZXR1cm4gJyZuYnNwOyc7XG4gICAgY2FzZSBDaGFyLlFVT1Q6XG4gICAgICByZXR1cm4gJyZxdW90Oyc7XG4gICAgY2FzZSBDaGFyLkFNUDpcbiAgICAgIHJldHVybiAnJmFtcDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXh0UmVwbGFjZXIoY2hhcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoIChjaGFyLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXIuTkJTUDpcbiAgICAgIHJldHVybiAnJm5ic3A7JztcbiAgICBjYXNlIENoYXIuQU1QOlxuICAgICAgcmV0dXJuICcmYW1wOyc7XG4gICAgY2FzZSBDaGFyLkxUOlxuICAgICAgcmV0dXJuICcmbHQ7JztcbiAgICBjYXNlIENoYXIuR1Q6XG4gICAgICByZXR1cm4gJyZndDsnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQXR0clZhbHVlKGF0dHJWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKEFUVFJfVkFMVUVfUkVHRVhfVEVTVC50ZXN0KGF0dHJWYWx1ZSkpIHtcbiAgICByZXR1cm4gYXR0clZhbHVlLnJlcGxhY2UoQVRUUl9WQUxVRV9SRUdFWF9SRVBMQUNFLCBhdHRyVmFsdWVSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIGF0dHJWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKFRFWFRfUkVHRVhfVEVTVC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShURVhUX1JFR0VYX1JFUExBQ0UsIHRleHRSZXBsYWNlcik7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlMb2MoYTogQVNUdjEuTm9kZSwgYjogQVNUdjEuTm9kZSk6IC0xIHwgMCB8IDEge1xuICAvLyBJZiBlaXRoZXIgaXMgaW52aXNpYmxlLCBkb24ndCB0cnkgdG8gb3JkZXIgdGhlbVxuICBpZiAoYS5sb2MuaXNJbnZpc2libGUgfHwgYi5sb2MuaXNJbnZpc2libGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhLmxvYy5zdGFydFBvc2l0aW9uLmxpbmUgPCBiLmxvYy5zdGFydFBvc2l0aW9uLmxpbmUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBpZiAoXG4gICAgYS5sb2Muc3RhcnRQb3NpdGlvbi5saW5lID09PSBiLmxvYy5zdGFydFBvc2l0aW9uLmxpbmUgJiZcbiAgICBhLmxvYy5zdGFydFBvc2l0aW9uLmNvbHVtbiA8IGIubG9jLnN0YXJ0UG9zaXRpb24uY29sdW1uXG4gICkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChcbiAgICBhLmxvYy5zdGFydFBvc2l0aW9uLmxpbmUgPT09IGIubG9jLnN0YXJ0UG9zaXRpb24ubGluZSAmJlxuICAgIGEubG9jLnN0YXJ0UG9zaXRpb24uY29sdW1uID09PSBiLmxvYy5zdGFydFBvc2l0aW9uLmNvbHVtblxuICApIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiAxO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==