84 lines
1.9 KiB
JavaScript
84 lines
1.9 KiB
JavaScript
|
// Generated by CoffeeScript 1.12.4
|
||
|
var Pattern, Unescaper, Utils;
|
||
|
|
||
|
Utils = require('./Utils');
|
||
|
|
||
|
Pattern = require('./Pattern');
|
||
|
|
||
|
Unescaper = (function() {
|
||
|
function Unescaper() {}
|
||
|
|
||
|
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})');
|
||
|
|
||
|
Unescaper.unescapeSingleQuotedString = function(value) {
|
||
|
return value.replace(/\'\'/g, '\'');
|
||
|
};
|
||
|
|
||
|
Unescaper.unescapeDoubleQuotedString = function(value) {
|
||
|
if (this._unescapeCallback == null) {
|
||
|
this._unescapeCallback = (function(_this) {
|
||
|
return function(str) {
|
||
|
return _this.unescapeCharacter(str);
|
||
|
};
|
||
|
})(this);
|
||
|
}
|
||
|
return this.PATTERN_ESCAPED_CHARACTER.replace(value, this._unescapeCallback);
|
||
|
};
|
||
|
|
||
|
Unescaper.unescapeCharacter = function(value) {
|
||
|
var ch;
|
||
|
ch = String.fromCharCode;
|
||
|
switch (value.charAt(1)) {
|
||
|
case '0':
|
||
|
return ch(0);
|
||
|
case 'a':
|
||
|
return ch(7);
|
||
|
case 'b':
|
||
|
return ch(8);
|
||
|
case 't':
|
||
|
return "\t";
|
||
|
case "\t":
|
||
|
return "\t";
|
||
|
case 'n':
|
||
|
return "\n";
|
||
|
case 'v':
|
||
|
return ch(11);
|
||
|
case 'f':
|
||
|
return ch(12);
|
||
|
case 'r':
|
||
|
return ch(13);
|
||
|
case 'e':
|
||
|
return ch(27);
|
||
|
case ' ':
|
||
|
return ' ';
|
||
|
case '"':
|
||
|
return '"';
|
||
|
case '/':
|
||
|
return '/';
|
||
|
case '\\':
|
||
|
return '\\';
|
||
|
case 'N':
|
||
|
return ch(0x0085);
|
||
|
case '_':
|
||
|
return ch(0x00A0);
|
||
|
case 'L':
|
||
|
return ch(0x2028);
|
||
|
case 'P':
|
||
|
return ch(0x2029);
|
||
|
case 'x':
|
||
|
return Utils.utf8chr(Utils.hexDec(value.substr(2, 2)));
|
||
|
case 'u':
|
||
|
return Utils.utf8chr(Utils.hexDec(value.substr(2, 4)));
|
||
|
case 'U':
|
||
|
return Utils.utf8chr(Utils.hexDec(value.substr(2, 8)));
|
||
|
default:
|
||
|
return '';
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return Unescaper;
|
||
|
|
||
|
})();
|
||
|
|
||
|
module.exports = Unescaper;
|