From f590a8bbee5c25f7996b263179f4effe88472121 Mon Sep 17 00:00:00 2001 From: drry Date: Thu, 2 Oct 2008 11:54:15 +0000 Subject: * fixed a regex. * et cetera. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@20520 d0d07461-0603-4401-acd4-de1884942a52 --- xpcom_inspector.js | 79 +++++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 43 deletions(-) (limited to 'xpcom_inspector.js') diff --git a/xpcom_inspector.js b/xpcom_inspector.js index 9fe3b19..1132fee 100644 --- a/xpcom_inspector.js +++ b/xpcom_inspector.js @@ -1,6 +1,6 @@ // ==VimperatorPlugin== // @name XPCOM List -// @description list XPCOM Components (for developer) +// @description list XPCOM Components (for developers) // @description-ja XPCOMコンポーネントを表示(開発者用) // ==/VimperatorPlugin== // @@ -17,7 +17,7 @@ // // 未補完でも大丈夫。適当に使えそうな組み合わせを表示してくれます // -// 注意:あまりに組み合わせの多いクラスとインターフェースを表示しようとするとFirefox,Thunderbirdごと落ちます(ぉ +// 注意:あまりに組み合わせの多いクラスとインターフェースを表示しようとするとFirefox, Thunderbirdごと落ちます(ぉ // (だれか直してー) // liberator.XPCOM = (function(){ @@ -27,27 +27,27 @@ const Ci = Components.interfaces; function XPClass(class){ //{{{ this.name = class; var _interface; - this.__defineGetter__('interface',function(){ + this.__defineGetter__('interface', function(){ if (_interface) return _interface; _interface = {}; var cl; try { cl = Cc[this.name].createInstance(); - } catch(e){ + } catch (e){ try { cl = Cc[this.name].getService(); - } catch(ex){ + } catch (ex){ liberator.log(this.name); liberator.log(e); return _interface; } } - for (var i in Ci){ + for (let i in Ci){ if (i == 'nsISupports' || i == 'IDispatch') continue; - var obj; + let obj; try { obj = cl.QueryInterface(Ci[i]); - } catch(e){ + } catch (e){ continue; } if (obj){ @@ -58,23 +58,19 @@ function XPClass(class){ //{{{ }); } //}}} XPClass.prototype = { //{{{ - get number(){ - return Cc[this.name].number; - }, + get number() Cc[this.name].number, has: function(filter){ var flag = false; if (filter instanceof RegExp){ - for (var i in this.interface){ + for (let i in this.interface){ if(flag = filter.test(i)) break; } } else { - flag = (interface in this.interface); + flag = (interface in this.interface); } return flag; }, - toString: function(){ - return this.name; - } + toString: function() this.name }; //}}} function XPInterface(c, i){ //{{{ this.interface = Ci[i]; @@ -90,20 +86,18 @@ XPInterface.prototype = { //{{{ var instance; try { instance = this.class.createInstance(this.interface); - } catch(e){ + } catch (e){ try { instance = this.class.getService(this.interface); - }catch(e) {} + }catch (e){} } return instance; } }; //}}} -function toKey(str){ - return str.replace(/[^\d\w](.)/g, function(m,p)p.toUpperCase()); -} +function toKey(str) str.replace(/\W(.)/g, function(m, p) p.toUpperCase()); var tree = {}; -for (var c in Cc){ - var key = toKey(c); +for (let c in Cc){ + let key = toKey(c); tree[key] = new XPClass(c); tree[c] = tree[key]; } @@ -116,29 +110,30 @@ liberator.commands.addUserCommand(['lscc'], 'List XPCOM class', liberator.echoerr('No arguments'); return; } - var args = liberator.commands.parseArgs(arg).arguments; + var args = liberator.commands.parseArgs(arg).arguments; if (args.length == 1){ liberator.echo(liberator.XPCOM.listClass(args[0], null, true), true); } else if (args[1] in Ci){ - var instance = tree[toKey(args[0])].interface[args[1]].create(); - echo(liberator.util.objectToString(instance,true) ,true); + let instance = tree[toKey(args[0])].interface[args[1]].create(); + echo(liberator.util.objectToString(instance, true), true); } else { liberator.echo(liberator.XPCOM.listClass(args[0], args[1], true), true); } - },{ + }, { completer: function(filter){ if (!filter) return []; - var args = liberator.commands.parseArgs(filter).arguments; + var args = liberator.commands.parseArgs(filter).arguments; var list = []; var position = 0; + var reg; if (args.length == 1){ - var reg = new RegExp(args[0],'i'); - for (var c in Cc){ + reg = new RegExp(args[0], 'i'); + for (let c in Cc){ if (reg.test(c)) list.push([Cc[c].name, Cc[c].number]); } } else if (args.length == 2 && args[0] in Cc){ - var reg = new RegExp(args[1],'i'); - for (var i in tree[toKey(args[0])].interface){ + reg = new RegExp(args[1], 'i'); + for (let i in tree[toKey(args[0])].interface){ if (reg.test(i)) list.push([Ci[i].name, Ci[i].number]); } position = args[0].length + 1; @@ -149,19 +144,17 @@ liberator.commands.addUserCommand(['lscc'], 'List XPCOM class', ); var manager = { get all() tree, - toKey: function(class){ - return toKey(class); - }, + toKey: function(class) toKey(class), toHTML: function(list){ var str = ['