From 821f961882a46877d44d93711f0616a2981f503b Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 13:31:34 +0800 Subject: [PATCH 1/9] l10n title/description for install.rdf like nodejs This is based on #419 The original one have more than 1 additional functions and needs more tweak, so I've rewritten the l10n part according to jpm code style(maybe?) --- lib/rdf.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/rdf.js b/lib/rdf.js index 2d73d21..6abc690 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -127,6 +127,24 @@ function createRDF(manifest) { }); } + if (manifest.locales) { + for (var locale in manifest.locales){ + var l10n = manifest.locales[locale]; + var l10nDescription = { + "em:locale": locale, + "em:name": l10n.title || manifest.title || manifest.name || "Untitled", + "em:description": l10n.description || manifest.description || undefined, + "em:creator": formatAuthor(manifest.author) + }; + + description.children.push({ + "em:localized": { + "Description": l10nDescription + } + }); + } + } + var xml = jsontoxml(header, { prettyPrint: true, xmlHeader: true, From 925d2979c7e6f3d29fe172bf814ad6c5be57f7d6 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 13:50:55 +0800 Subject: [PATCH 2/9] Minor tweak --- lib/rdf.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/rdf.js b/lib/rdf.js index 6abc690..37438b8 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -130,16 +130,14 @@ function createRDF(manifest) { if (manifest.locales) { for (var locale in manifest.locales){ var l10n = manifest.locales[locale]; - var l10nDescription = { - "em:locale": locale, - "em:name": l10n.title || manifest.title || manifest.name || "Untitled", - "em:description": l10n.description || manifest.description || undefined, - "em:creator": formatAuthor(manifest.author) - }; - description.children.push({ "em:localized": { - "Description": l10nDescription + "Description": { + "em:locale": locale, + "em:name": l10n.title || manifest.title || manifest.name || "Untitled", + "em:description": l10n.description || manifest.description || undefined, + "em:creator": formatAuthor(manifest.author) + } } }); } From 4ebc3a86aae1e101c21229b41d589210d6ca406a Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 18:50:25 +0800 Subject: [PATCH 3/9] Oops, sorry I've forgot the homepage There's also contributors, translators, and developers tags too, but it needs more tweak to make this part work well. This also reverted last commit https://github.com/jc3213/jpm/commit/925d2979c7e6f3d29fe172bf814ad6c5be57f7d6 --- lib/rdf.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/rdf.js b/lib/rdf.js index 37438b8..467060c 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -130,14 +130,20 @@ function createRDF(manifest) { if (manifest.locales) { for (var locale in manifest.locales){ var l10n = manifest.locales[locale]; + var l10nDescription = { + "em:locale": locale, + "em:name": l10n.title || manifest.title || manifest.name || "Untitled", + "em:description": l10n.description || manifest.description || undefined, + "em:creator": formatAuthor(manifest.author) + }; + + if (manifest.homepage) { + l10nDescription["em:homepageURL"] = manifest.homepage; + } + description.children.push({ "em:localized": { - "Description": { - "em:locale": locale, - "em:name": l10n.title || manifest.title || manifest.name || "Untitled", - "em:description": l10n.description || manifest.description || undefined, - "em:creator": formatAuthor(manifest.author) - } + "Description": l10nDescription } }); } From 28d86b8bcac84d40c53e6ad174fb95b0a4b8cfcc Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 19:41:58 +0800 Subject: [PATCH 4/9] add locales to unit test --- test/unit/test.rdf.js | 88 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/test/unit/test.rdf.js b/test/unit/test.rdf.js index 7b8d05c..ce9fbbb 100644 --- a/test/unit/test.rdf.js +++ b/test/unit/test.rdf.js @@ -345,6 +345,94 @@ describe("lib/rdf", function() { }); }); + describe("locales", function() { + it("add en-US localized title and description to add-on", function() { + var xml = setupRDF({ locales: { + "en-US" : { + title: "my-title", + description: "my-desc" + } + }}); + var locales = xml.getElementsByTagName("em:localized"); + var locale = locales[0].childNodes[1]; // Description + expect(locales.length).to.be.equal(1); + expect(locale.tagName).to.be.equal("Description"); + expect(locale.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale.childNodes[1].childNodes[0].data).to.be.equal("en-US"); + expect(locale.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale.childNodes[3].childNodes[0].data).to.be.equal("my-title"); + expect(locale.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale.childNodes[5].childNodes[0].data).to.be.equal("my-desc"); + }); + + it("add ja localized title to add-on", function() { + var xml = setupRDF({ locales: { + "ja" : { + title: "名前" + } + }}); + var locales = xml.getElementsByTagName("em:localized"); + var locale = locales[0].childNodes[1]; // Description + expect(locales.length).to.be.equal(1); + expect(locale.tagName).to.be.equal("Description"); + expect(locale.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale.childNodes[1].childNodes[0].data).to.be.equal("ja"); + expect(locale.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale.childNodes[3].childNodes[0].data).to.be.equal("名前"); + expect(locale.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale.childNodes[5].childNodes[0].data).to.be.equal("undefined"); + }); + + it("add ja localized description to add-on", function() { + var xml = setupRDF({ locales: { + "ja" : { + description: "紹介" + } + }}); + var locales = xml.getElementsByTagName("em:localized"); + var locale = locales[0].childNodes[1]; // Description + expect(locales.length).to.be.equal(1); + expect(locale.tagName).to.be.equal("Description"); + expect(locale.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale.childNodes[1].childNodes[0].data).to.be.equal("ja"); + expect(locale.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale.childNodes[3].childNodes[0].data).to.be.equal("Untitled"); + expect(locale.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale.childNodes[5].childNodes[0].data).to.be.equal("紹介"); + }); + + it("add en-US & ja localized title and description to add-on", function() { + var xml = setupRDF({ locales: { + "en-US" : { + title: "my-title", + description: "my-desc" + }, + "ja" : { + title: "名前", + description: "紹介" + } + }}); + var locales = xml.getElementsByTagName("em:localized"); + var locale_en = locales[0].childNodes[1]; // Description + var locale_ja = locales[1].childNodes[1]; // Description + expect(locales.length).to.be.equal(2); + expect(locale_en.tagName).to.be.equal("Description"); + expect(locale_en.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale_en.childNodes[1].childNodes[0].data).to.be.equal("en-US"); + expect(locale_en.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale_en.childNodes[3].childNodes[0].data).to.be.equal("my-title"); + expect(locale_en.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale_en.childNodes[5].childNodes[0].data).to.be.equal("my-desc"); + expect(locale_ja.tagName).to.be.equal("Description"); + expect(locale_ja.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale_ja.childNodes[1].childNodes[0].data).to.be.equal("ja"); + expect(locale_ja.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale_ja.childNodes[3].childNodes[0].data).to.be.equal("名前"); + expect(locale_ja.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale_ja.childNodes[5].childNodes[0].data).to.be.equal("紹介"); + }); + }); + describe("createUpdateRDF", function() { it("create the update.rdf file with the correct value", function() { var str = RDF.createUpdateRDF( From 07b05749d8dbe2478082ff0872dabbba1be63e20 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 20:16:13 +0800 Subject: [PATCH 5/9] Add title and description for comparation --- test/unit/test.rdf.js | 84 +++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/test/unit/test.rdf.js b/test/unit/test.rdf.js index ce9fbbb..18b52b7 100644 --- a/test/unit/test.rdf.js +++ b/test/unit/test.rdf.js @@ -346,31 +346,35 @@ describe("lib/rdf", function() { }); describe("locales", function() { - it("add en-US localized title and description to add-on", function() { - var xml = setupRDF({ locales: { - "en-US" : { - title: "my-title", - description: "my-desc" + it("add ja localized title and description to add-on", function() { + var xml = setupRDF({ title: "my-title", description: "my-desc", + locales: { + "ja" : { + title: "名前", + description: "紹介" + } } - }}); + }); var locales = xml.getElementsByTagName("em:localized"); var locale = locales[0].childNodes[1]; // Description expect(locales.length).to.be.equal(1); expect(locale.tagName).to.be.equal("Description"); expect(locale.childNodes[1].tagName).to.be.equal("em:locale"); - expect(locale.childNodes[1].childNodes[0].data).to.be.equal("en-US"); + expect(locale.childNodes[1].childNodes[0].data).to.be.equal("ja"); expect(locale.childNodes[3].tagName).to.be.equal("em:name"); - expect(locale.childNodes[3].childNodes[0].data).to.be.equal("my-title"); + expect(locale.childNodes[3].childNodes[0].data).to.be.equal("名前"); expect(locale.childNodes[5].tagName).to.be.equal("em:description"); - expect(locale.childNodes[5].childNodes[0].data).to.be.equal("my-desc"); + expect(locale.childNodes[5].childNodes[0].data).to.be.equal("紹介"); }); it("add ja localized title to add-on", function() { - var xml = setupRDF({ locales: { - "ja" : { - title: "名前" + var xml = setupRDF({ title: "my-title", description: "my-desc", + locales: { + "ja" : { + title: "名前" + } } - }}); + }); var locales = xml.getElementsByTagName("em:localized"); var locale = locales[0].childNodes[1]; // Description expect(locales.length).to.be.equal(1); @@ -380,15 +384,17 @@ describe("lib/rdf", function() { expect(locale.childNodes[3].tagName).to.be.equal("em:name"); expect(locale.childNodes[3].childNodes[0].data).to.be.equal("名前"); expect(locale.childNodes[5].tagName).to.be.equal("em:description"); - expect(locale.childNodes[5].childNodes[0].data).to.be.equal("undefined"); + expect(locale.childNodes[5].childNodes[0].data).to.be.equal("my-desc"); }); it("add ja localized description to add-on", function() { - var xml = setupRDF({ locales: { - "ja" : { - description: "紹介" + var xml = setupRDF({ title: "my-title", description: "my-desc", + locales: { + "ja" : { + description: "紹介" + } } - }}); + }); var locales = xml.getElementsByTagName("em:localized"); var locale = locales[0].childNodes[1]; // Description expect(locales.length).to.be.equal(1); @@ -396,33 +402,28 @@ describe("lib/rdf", function() { expect(locale.childNodes[1].tagName).to.be.equal("em:locale"); expect(locale.childNodes[1].childNodes[0].data).to.be.equal("ja"); expect(locale.childNodes[3].tagName).to.be.equal("em:name"); - expect(locale.childNodes[3].childNodes[0].data).to.be.equal("Untitled"); + expect(locale.childNodes[3].childNodes[0].data).to.be.equal("my-title"); expect(locale.childNodes[5].tagName).to.be.equal("em:description"); expect(locale.childNodes[5].childNodes[0].data).to.be.equal("紹介"); }); - it("add en-US & ja localized title and description to add-on", function() { - var xml = setupRDF({ locales: { - "en-US" : { - title: "my-title", - description: "my-desc" - }, - "ja" : { - title: "名前", - description: "紹介" + it("add ja & zh-CN localized title and description to add-on", function() { + var xml = setupRDF({ title: "my-title", description: "my-desc", + locales: { + "ja" : { + title: "名前", + description: "紹介" + }, + "zh-CN" : { + title: "扩展", + description: "说明" + } } - }}); + }); var locales = xml.getElementsByTagName("em:localized"); - var locale_en = locales[0].childNodes[1]; // Description - var locale_ja = locales[1].childNodes[1]; // Description + var locale_ja = locales[0].childNodes[1]; // Description + var locale_zhs = locales[1].childNodes[1]; // Description expect(locales.length).to.be.equal(2); - expect(locale_en.tagName).to.be.equal("Description"); - expect(locale_en.childNodes[1].tagName).to.be.equal("em:locale"); - expect(locale_en.childNodes[1].childNodes[0].data).to.be.equal("en-US"); - expect(locale_en.childNodes[3].tagName).to.be.equal("em:name"); - expect(locale_en.childNodes[3].childNodes[0].data).to.be.equal("my-title"); - expect(locale_en.childNodes[5].tagName).to.be.equal("em:description"); - expect(locale_en.childNodes[5].childNodes[0].data).to.be.equal("my-desc"); expect(locale_ja.tagName).to.be.equal("Description"); expect(locale_ja.childNodes[1].tagName).to.be.equal("em:locale"); expect(locale_ja.childNodes[1].childNodes[0].data).to.be.equal("ja"); @@ -430,6 +431,13 @@ describe("lib/rdf", function() { expect(locale_ja.childNodes[3].childNodes[0].data).to.be.equal("名前"); expect(locale_ja.childNodes[5].tagName).to.be.equal("em:description"); expect(locale_ja.childNodes[5].childNodes[0].data).to.be.equal("紹介"); + expect(locale_zhs.tagName).to.be.equal("Description"); + expect(locale_zhs.childNodes[1].tagName).to.be.equal("em:locale"); + expect(locale_zhs.childNodes[1].childNodes[0].data).to.be.equal("zh-CN"); + expect(locale_zhs.childNodes[3].tagName).to.be.equal("em:name"); + expect(locale_zhs.childNodes[3].childNodes[0].data).to.be.equal("扩展"); + expect(locale_zhs.childNodes[5].tagName).to.be.equal("em:description"); + expect(locale_zhs.childNodes[5].childNodes[0].data).to.be.equal("说明"); }); }); From 36c42a65b9fe504b31593b4df51c1de6a483c5f7 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Tue, 16 Feb 2016 21:41:40 +0800 Subject: [PATCH 6/9] fixed typo it failed on `npm run jscs` but works on `npm test unit` and could build add-on correctly --- lib/rdf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rdf.js b/lib/rdf.js index 467060c..7395a21 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -128,7 +128,7 @@ function createRDF(manifest) { } if (manifest.locales) { - for (var locale in manifest.locales){ + for (var locale in manifest.locales) { var l10n = manifest.locales[locale]; var l10nDescription = { "em:locale": locale, From 3597036743dc2c04534c6251baf161e4d5c67720 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Wed, 17 Feb 2016 00:18:27 +0800 Subject: [PATCH 7/9] get em:name and em:description from jetpackMeta --- lib/rdf.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rdf.js b/lib/rdf.js index 7395a21..5fa89cf 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -132,8 +132,8 @@ function createRDF(manifest) { var l10n = manifest.locales[locale]; var l10nDescription = { "em:locale": locale, - "em:name": l10n.title || manifest.title || manifest.name || "Untitled", - "em:description": l10n.description || manifest.description || undefined, + "em:name": l10n.title || jetpackMeta["em:name"], + "em:description": l10n.description || jetpackMeta["em:description"], "em:creator": formatAuthor(manifest.author) }; From ae0383556e3aa2c2cafefe2d143e1e7b5eba0c15 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Wed, 17 Feb 2016 00:21:35 +0800 Subject: [PATCH 8/9] all variables typically follow camel case format --- test/unit/test.rdf.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/test/unit/test.rdf.js b/test/unit/test.rdf.js index 18b52b7..d3cb17b 100644 --- a/test/unit/test.rdf.js +++ b/test/unit/test.rdf.js @@ -421,23 +421,23 @@ describe("lib/rdf", function() { } }); var locales = xml.getElementsByTagName("em:localized"); - var locale_ja = locales[0].childNodes[1]; // Description - var locale_zhs = locales[1].childNodes[1]; // Description + var localeJa = locales[0].childNodes[1]; // Description + var localeZhs = locales[1].childNodes[1]; // Description expect(locales.length).to.be.equal(2); - expect(locale_ja.tagName).to.be.equal("Description"); - expect(locale_ja.childNodes[1].tagName).to.be.equal("em:locale"); - expect(locale_ja.childNodes[1].childNodes[0].data).to.be.equal("ja"); - expect(locale_ja.childNodes[3].tagName).to.be.equal("em:name"); - expect(locale_ja.childNodes[3].childNodes[0].data).to.be.equal("名前"); - expect(locale_ja.childNodes[5].tagName).to.be.equal("em:description"); - expect(locale_ja.childNodes[5].childNodes[0].data).to.be.equal("紹介"); - expect(locale_zhs.tagName).to.be.equal("Description"); - expect(locale_zhs.childNodes[1].tagName).to.be.equal("em:locale"); - expect(locale_zhs.childNodes[1].childNodes[0].data).to.be.equal("zh-CN"); - expect(locale_zhs.childNodes[3].tagName).to.be.equal("em:name"); - expect(locale_zhs.childNodes[3].childNodes[0].data).to.be.equal("扩展"); - expect(locale_zhs.childNodes[5].tagName).to.be.equal("em:description"); - expect(locale_zhs.childNodes[5].childNodes[0].data).to.be.equal("说明"); + expect(localeJa.tagName).to.be.equal("Description"); + expect(localeJa.childNodes[1].tagName).to.be.equal("em:locale"); + expect(localeJa.childNodes[1].childNodes[0].data).to.be.equal("ja"); + expect(localeJa.childNodes[3].tagName).to.be.equal("em:name"); + expect(localeJa.childNodes[3].childNodes[0].data).to.be.equal("名前"); + expect(localeJa.childNodes[5].tagName).to.be.equal("em:description"); + expect(localeJa.childNodes[5].childNodes[0].data).to.be.equal("紹介"); + expect(localeZhs.tagName).to.be.equal("Description"); + expect(localeZhs.childNodes[1].tagName).to.be.equal("em:locale"); + expect(localeZhs.childNodes[1].childNodes[0].data).to.be.equal("zh-CN"); + expect(localeZhs.childNodes[3].tagName).to.be.equal("em:name"); + expect(localeZhs.childNodes[3].childNodes[0].data).to.be.equal("扩展"); + expect(localeZhs.childNodes[5].tagName).to.be.equal("em:description"); + expect(localeZhs.childNodes[5].childNodes[0].data).to.be.equal("说明"); }); }); From 51ea752b581d01b0997abab507e8374371eead44 Mon Sep 17 00:00:00 2001 From: jc3213 Date: Wed, 17 Feb 2016 00:52:44 +0800 Subject: [PATCH 9/9] oops, minor tweak --- lib/rdf.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rdf.js b/lib/rdf.js index 5fa89cf..878dbe0 100644 --- a/lib/rdf.js +++ b/lib/rdf.js @@ -134,11 +134,11 @@ function createRDF(manifest) { "em:locale": locale, "em:name": l10n.title || jetpackMeta["em:name"], "em:description": l10n.description || jetpackMeta["em:description"], - "em:creator": formatAuthor(manifest.author) + "em:creator": jetpackMeta["em:creator"] }; if (manifest.homepage) { - l10nDescription["em:homepageURL"] = manifest.homepage; + l10nDescription["em:homepageURL"] = jetpackMeta["em:homepageURL"]; } description.children.push({