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:
		| @@ -261,7 +261,8 @@ PO.Item.prototype.toString = function () { | ||||
|                 }); | ||||
|             } else { | ||||
|                 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"'); | ||||
|         }); | ||||
|  | ||||
|         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 () { | ||||
|             var input = fs.readFileSync(__dirname + '/fixtures/c-strings.po', 'utf8'); | ||||
|             var po = PO.parse(input); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user