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