Parse item flags.

This commit is contained in:
Ruben Vermeersch 2013-12-17 15:04:44 +01:00
parent b2e53d790b
commit fff8349e25
3 changed files with 40 additions and 0 deletions

View File

@ -113,6 +113,13 @@ PO.parse = function (data) {
finish(); finish();
item.references.push(trim(line.replace(/^#:/, ''))); item.references.push(trim(line.replace(/^#:/, '')));
} }
else if (line.match(/^#,/)) { // Flags
finish();
var flags = trim(line.replace(/^#,/, '')).split(",");
for (var i = 0; i < flags.length; i++) {
item.flags[flags[i]] = true;
}
}
else if (line.match(/^#/)) { // Comment else if (line.match(/^#/)) { // Comment
finish(); finish();
item.comments.push(trim(line.replace(/^#/, ''))); item.comments.push(trim(line.replace(/^#/, '')));
@ -157,6 +164,7 @@ PO.Item = function () {
this.msgid_plural = null; this.msgid_plural = null;
this.msgstr = []; this.msgstr = [];
this.comments = []; this.comments = [];
this.flags = {};
}; };
PO.Item.prototype.toString = function () { PO.Item.prototype.toString = function () {

20
test/fixtures/fuzzy.po vendored Normal file
View File

@ -0,0 +1,20 @@
# French translation of Link (6.x-2.9)
# Copyright (c) 2011 by the French translation team
#
msgid ""
msgstr ""
"Project-Id-Version: Link (6.x-2.9)\n"
"POT-Creation-Date: 2011-12-31 23:39+0000\n"
"PO-Revision-Date: 2013-12-17 14:59+0100\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Last-Translator: Ruben Vermeersch <ruben@rocketeer.be>\n"
"Language: fr\n"
"X-Generator: Poedit 1.6.2\n"
#, fuzzy
msgid "Sources"
msgstr "Source"

View File

@ -50,4 +50,16 @@ describe('Parse', function () {
assert.equal(item.msgstr, "Y"); assert.equal(item.msgstr, "Y");
assert.deepEqual(item.references, ["a", "b"]); assert.deepEqual(item.references, ["a", "b"]);
}); });
it('Parses flags', function () {
var po = PO.parse(fs.readFileSync(__dirname + '/fixtures/fuzzy.po', 'utf8'));
assert.notEqual(po, null);
assert.equal(po.items.length, 1);
var item = po.items[0];
assert.equal(item.msgid, "Sources");
assert.equal(item.msgstr, "Source");
assert.notEqual(item.flags, null);
assert.equal(item.flags.fuzzy, true);
});
}); });