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 { |             } 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); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user