From f8f6022e014eee96013ffdde7fea62461a3fa4a1 Mon Sep 17 00:00:00 2001 From: teramako Date: Sun, 7 Dec 2008 11:48:07 +0000 Subject: new release git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26053 d0d07461-0603-4401-acd4-de1884942a52 --- pluginManager.js | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 pluginManager.js diff --git a/pluginManager.js b/pluginManager.js new file mode 100644 index 0000000..d6601cd --- /dev/null +++ b/pluginManager.js @@ -0,0 +1,177 @@ +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; +})(); + -- cgit v1.2.3