Skip to content

Commit a7d6d52

Browse files
committed
Updated solution after feedback
1 parent 212cada commit a7d6d52

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/irclineparser.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ module.exports = parseIrcLine;
99
*/
1010
var parse_regex = /^(?:@([^ ]+) )?(?::((?:(?:([^\s!@]+)(?:!([^\s@]+))?)@)?(\S+)) )?((?:[a-zA-Z]+)|(?:[0-9]{3}))(?: ([^:].*?))?(?: :(.*))?$/i;
1111

12+
var escape_tags_map = {
13+
'\\\\': '\\',
14+
'\\:': ';',
15+
'\\s': ' ',
16+
'\\n': '\n',
17+
'\\r': '\r'
18+
};
19+
1220
function parseIrcLine(line) {
1321
var msg;
1422
var tags = Object.create(null);
@@ -30,12 +38,9 @@ function parseIrcLine(line) {
3038
var value = parts[1];
3139
if (key) {
3240
if (typeof value === 'string') {
33-
var segs = value.split(/\\\\/g);
34-
segs = segs.map((v) => v.replace(/\\:/g, ';'));
35-
segs = segs.map((v) => v.replace(/\\s/g, ' '));
36-
segs = segs.map((v) => v.replace(/\\n/g, '\n'));
37-
segs = segs.map((v) => v.replace(/\\r/g, '\r'));
38-
value = segs.join('\\');
41+
value = value.replace(/\\\\|\\:|\\s|\\n|\\r/gi, function(matched) {
42+
return escape_tags_map[matched] || '';
43+
});
3944
} else {
4045
value = true;
4146
}

0 commit comments

Comments
 (0)