Unescaper.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Generated by CoffeeScript 1.12.4
  2. var Pattern, Unescaper, Utils;
  3. Utils = require('./Utils');
  4. Pattern = require('./Pattern');
  5. Unescaper = (function() {
  6. function Unescaper() {}
  7. Unescaper.PATTERN_ESCAPED_CHARACTER = new Pattern('\\\\([0abt\tnvfre "\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})');
  8. Unescaper.unescapeSingleQuotedString = function(value) {
  9. return value.replace(/\'\'/g, '\'');
  10. };
  11. Unescaper.unescapeDoubleQuotedString = function(value) {
  12. if (this._unescapeCallback == null) {
  13. this._unescapeCallback = (function(_this) {
  14. return function(str) {
  15. return _this.unescapeCharacter(str);
  16. };
  17. })(this);
  18. }
  19. return this.PATTERN_ESCAPED_CHARACTER.replace(value, this._unescapeCallback);
  20. };
  21. Unescaper.unescapeCharacter = function(value) {
  22. var ch;
  23. ch = String.fromCharCode;
  24. switch (value.charAt(1)) {
  25. case '0':
  26. return ch(0);
  27. case 'a':
  28. return ch(7);
  29. case 'b':
  30. return ch(8);
  31. case 't':
  32. return "\t";
  33. case "\t":
  34. return "\t";
  35. case 'n':
  36. return "\n";
  37. case 'v':
  38. return ch(11);
  39. case 'f':
  40. return ch(12);
  41. case 'r':
  42. return ch(13);
  43. case 'e':
  44. return ch(27);
  45. case ' ':
  46. return ' ';
  47. case '"':
  48. return '"';
  49. case '/':
  50. return '/';
  51. case '\\':
  52. return '\\';
  53. case 'N':
  54. return ch(0x0085);
  55. case '_':
  56. return ch(0x00A0);
  57. case 'L':
  58. return ch(0x2028);
  59. case 'P':
  60. return ch(0x2029);
  61. case 'x':
  62. return Utils.utf8chr(Utils.hexDec(value.substr(2, 2)));
  63. case 'u':
  64. return Utils.utf8chr(Utils.hexDec(value.substr(2, 4)));
  65. case 'U':
  66. return Utils.utf8chr(Utils.hexDec(value.substr(2, 8)));
  67. default:
  68. return '';
  69. }
  70. };
  71. return Unescaper;
  72. })();
  73. module.exports = Unescaper;