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; })();