var PLUGIN_INFO =
{NAME}
Manage Vimperator Plugin
{"Vimpeator\u30D7\u30E9\u30B0\u30A4\u30F3\u7BA1\u7406"}
0.1a
;
liberator.plugins.pluginManager = (function(){
var lang = window.navigator.language;
var tags = {
name: function(info) info.name ? info.name[0] : null,
description: function(info){
if (!info.description) return null;
var desc = "";
var length = info.description.length();
if (length > 1){
desc = info.description[0];
for (var i=0; i>;
var ite = Iterator(lines);
var num, line;
try{
while ([num, line] = ite.next()){
if (!line) continue;
if (/^\s*==(.*)==\s*$/.test(line)){
line = RegExp.$1;
xml += {line}
;
continue;
}
var reg = /^\s*(.*)\s*:\s*$/;
if (reg.test(line)){
var dl = - {RegExp.$1}
;
while ([num, line] = ite.next()){
if (!line) break;
if (reg.test(line)){
dl.* += {RegExp.$1};
} else {
dl.* += {line.replace(/^\s*|\s*$/g,"")};
}
}
xml += dl;
continue;
}
xml += <>{line}
>;
}
}catch(e){}
return xml;
}
};
function getPlugins(){
var list = [];
var contexts = liberator.plugins.contexts;
for (var path in contexts){
var context = contexts[path];
var info = context.PLUGIN_INFO || null;
var plugin = [
["path", path]
];
plugin["name"] = context.NAME;
if (info){
for (var tag in tags){
var value = tags[tag](info);
if (value.toString().length > 0)
plugin.push([tag, value]);
}
}
list.push(plugin);
}
return list;
}
function itemFormater(plugin, showDetail){
if (showDetail)
return template.table(plugin.name, plugin);
var data = plugin.filter(function($_) $_[0] != 'detail');
return template.table(plugin.name, data);
}
commands.addUserCommand(['plugin[help]'], 'list vimperator plugin ',
function(args){
liberator.plugins.pluginManager.list(args[0], args['-verbose']);
},{
argCount: "*",
options: [
[['-verbose','-v'], commands.OPTION_NOARG],
],
completer: function(context){
var all = getPlugins().map(function(plugin){
var desc = '-';
for (var i=0; i= 0);
}
},true);
var public = {
list: function(name, showDetail){
var xml = <>>;
var plugins = getPlugins();
if (name){
var plugin = plugins.filter(function(plugin) plugin.name == name)[0];
if (plugin){
xml = itemFormater(plugin, showDetail);
}
} else {
plugins.forEach(function(plugin) xml += itemFormater(plugin, showDetail));
}
liberator.echo(xml, true);
},
};
return public;
})();