restore previous behaviour with \n in strings
An incompatible change (that actually breaks po parsing after writing) had been introduced with commite164fcfe9d
. If _process returned an array (which is the case for strings containing \n character), array.toString will return a comma separated list, which is not valid po syntax. Added a test to restore the behaviour from before thee164fcfe9d
.
This commit is contained in:
parent
8e49417916
commit
af94d8ff5e
@ -261,7 +261,8 @@ PO.Item.prototype.toString = function () {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
text = isArray(text) ? text.join() : text;
|
text = isArray(text) ? text.join() : text;
|
||||||
lines = lines.concat(mkObsolete + _process(keyword, text));
|
var processed = _process(keyword, text);
|
||||||
|
lines = lines.concat(mkObsolete + processed.join('\n' + mkObsolete));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -92,6 +92,15 @@ describe('Write', function () {
|
|||||||
assertHasLine(item.toString(), 'msgid "\\\\ should be written escaped"');
|
assertHasLine(item.toString(), 'msgid "\\\\ should be written escaped"');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should escape \\n', function () {
|
||||||
|
var item = new PO.Item();
|
||||||
|
|
||||||
|
item.msgid = '\n should be written escaped';
|
||||||
|
assertHasLine(item.toString(), 'msgid ""');
|
||||||
|
assertHasLine(item.toString(), '""');
|
||||||
|
assertHasLine(item.toString(), '" should be written escaped"');
|
||||||
|
});
|
||||||
|
|
||||||
it('should write identical file after parsing a file', function () {
|
it('should write identical file after parsing a file', function () {
|
||||||
var input = fs.readFileSync(__dirname + '/fixtures/c-strings.po', 'utf8');
|
var input = fs.readFileSync(__dirname + '/fixtures/c-strings.po', 'utf8');
|
||||||
var po = PO.parse(input);
|
var po = PO.parse(input);
|
||||||
|
Loading…
Reference in New Issue
Block a user