blob: d0c826e0d0650505ab8e4786e2ab06916116d613 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
// Generated by CoffeeScript 2.4.1
var Pattern, Unescaper, Utils;
Utils = require('./Utils');
Pattern = require('./Pattern');
Unescaper = (function() {
// Unescaper encapsulates unescaping rules for single and double-quoted YAML strings.
class Unescaper {
static unescapeSingleQuotedString(value) {
return value.replace(/\'\'/g, '\'');
}
// Unescapes a double quoted string.
// @param [String] value A double quoted string.
// @return [String] The unescaped string.
static unescapeDoubleQuotedString(value) {
if (this._unescapeCallback == null) {
this._unescapeCallback = (str) => {
return this.unescapeCharacter(str);
};
}
// Evaluate the string
return this.PATTERN_ESCAPED_CHARACTER.replace(value, this._unescapeCallback);
}
// Unescapes a character that was found in a double-quoted string
// @param [String] value An escaped character
// @return [String] The unescaped character
static unescapeCharacter(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':
// U+0085 NEXT LINE
return ch(0x0085);
case '_':
// U+00A0 NO-BREAK SPACE
return ch(0x00A0);
case 'L':
// U+2028 LINE SEPARATOR
return ch(0x2028);
case 'P':
// U+2029 PARAGRAPH SEPARATOR
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 '';
}
}
};
// Regex fragment that matches an escaped character in
// a double quoted string.
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})');
return Unescaper;
}).call(this);
module.exports = Unescaper;
|