From 984f070cec08f03bc02c0b992884b1417c1330dd Mon Sep 17 00:00:00 2001 From: anekos Date: Tue, 9 Dec 2008 08:19:19 +0000 Subject: License を追加 全ての項目で lang が効くようにした。 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26204 d0d07461-0603-4401-acd4-de1884942a52 --- pluginManager.js | 75 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/pluginManager.js b/pluginManager.js index d53bfda..c1f1c85 100644 --- a/pluginManager.js +++ b/pluginManager.js @@ -4,7 +4,7 @@ var PLUGIN_INFO = Manage Vimperator Plugin Vimpeatorプラグインの管理 teramako -0.1 +0.2 2.0pre 2.0pre {info.author.toString()}; - if (info.author.@homepage.toString() != '') - xml += <> {makeLink(info.author.@homepage.toString())}; - if (info.author.@mail.toString() != '') - xml += <> ({makeLink("mailto:"+info.author.@mail)}); + var xml = <>{info.toString()}; + if (info.@homepage.toString() != '') + xml += <> {makeLink(info.@homepage.toString())}; + if (info.@mail.toString() != '') + xml += <> ({makeLink("mailto:"+info.@mail)}); return xml; }, - description: function(info){ - if (!info.description) return null; - var desc = info.description[0].toString(); - for (let i=info.description.length(), lang=lang.split('-', 2).shift(); i-->1;){ - if (info.description[i].@lang == lang){ - desc = info.description[i].toString(); - break; - } - } - for (let i=info.description.length(); i-->1;){ - if (info.description[i].@lang == lang){ - desc = info.description[i].toString(); - break; - } - } - return makeLink(fromUTF8Octets(desc)); + description: function(info) makeLink(fromUTF8Octets(info.toString())), + license: function(info) { + var xml = <>{info.toString()}; + if (info.@document.toString() != '') + xml += <> {makeLink(info.@document.toString())}; + return xml; }, - version: function(info) info.version || null, - maxVersion: function(info) info.maxVersion || null, - minVersion: function(info) info.minVersion || null, + version: id, + maxVersion: id, + minVersion: id, detail: function(info){ - if (!info.detail) - return null; + if (info.* && info.*[0].nodeKind() == 'element') + return info.*; - if (info.detail.* && info.detail.*[0].nodeKind() == 'element') - return info.detail.*; - - var text = fromUTF8Octets(info.detail.*.toString()); + var text = fromUTF8Octets(info.*.toString()); var lines = text.split(/\r\n|[\r\n]/); var xml = <>; var ite = Iterator(lines); @@ -127,6 +117,25 @@ var tags = { return xml; } }; +function chooseByLang (elems) { + if (!elems) + return null; + function get (lang) { + for (let i=elems.length(); i-->1;){ + if (elems[i].@lang == lang) + return elems[i]; + } + } + return get(lang) || get(lang.split('-', 2).shift()) || elems[0] || elems; +} +for (let it in Iterator(tags)) { + let [name, value] = it; + tags[name] = function (info) { + if (!info[name]) + return null; + return value.call(tags, chooseByLang(info[name])); + }; +} function makeLink(str){ return XMLList(str.replace(/(?:https?:\/\/|mailto:)\S+/g, '$&')); } -- cgit v1.2.3