aboutsummaryrefslogtreecommitdiffstats
path: root/notifier.js
AgeCommit message (Collapse)Author
2010-11-29Fix <updateURL>anekos
2009-01-09 * cosmetic changes.drry
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28232 d0d07461-0603-4401-acd4-de1884942a52
2009-01-09* cosmetic changes.suVene
* SubjectHttp#diff return parsed. * subject_weather_yahoo ajust next time. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28211 d0d07461-0603-4401-acd4-de1884942a52
2009-01-02add "subject_liberator_echomsg.js".suVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27801 d0d07461-0603-4401-acd4-de1884942a52
2008-12-28add notifier/subject_wassr.jssuVene
mod libly.js bugfix. etc. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27534 d0d07461-0603-4401-acd4-de1884942a52
2008-12-22無駄なdump削除。suVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27258 d0d07461-0603-4401-acd4-de1884942a52
2008-12-22licensesuVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27241 d0d07461-0603-4401-acd4-de1884942a52
2008-12-22 * XPath を修正しました。drry
* ほか。 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27220 d0d07461-0603-4401-acd4-de1884942a52
2008-12-21* shutdown 時の timer cleanup.suVene
* document.unload 時の interval cleanup. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27175 d0d07461-0603-4401-acd4-de1884942a52
2008-12-20add <updateURL> for pluginManager.js [27131]suVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27132 d0d07461-0603-4401-acd4-de1884942a52
2008-12-18* add subject_weather_yahoo.js.suVene
* observer_growl.js のオプション設定. * css微調整. * etc. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27023 d0d07461-0603-4401-acd4-de1884942a52
2008-12-17 * Libraries.drry
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26980 d0d07461-0603-4401-acd4-de1884942a52
2008-12-15* growl.css - add head link style.suVene
* observer_growl.js - add hyperlink.mod default life 10 seconds. * subject_hatelabo_bottle.js - parse permalink. * notifier.js - follow pluginManager.etc. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26822 d0d07461-0603-4401-acd4-de1884942a52
2008-12-09* _libly.js ver.0.1.4 にあわせた修正. [26222]suVene
* event 追加. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26230 d0d07461-0603-4401-acd4-de1884942a52
2008-12-08とりあえず、はてなボトルの変更通知はできるようにな ↵suVene
た。TODO: wedata, animation. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26154 d0d07461-0603-4401-acd4-de1884942a52
2008-12-08*SubjectHttp定義.suVene
*registerするときに下位クラスから基底クラスを指定するように変更. *notifier/observer/subject の PLUGIN_INFO対応 @see http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/pluginManager.js *ほか. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26152 d0d07461-0603-4401-acd4-de1884942a52
2008-12-07*libty.js bug fix.suVene
*それに伴うmulti_requester.jsの修正 *subject_test.js rename to subject_hatelabo_bottle.js(途中) *etc. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26085 d0d07461-0603-4401-acd4-de1884942a52
2008-12-07fix typoanekos
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26035 d0d07461-0603-4401-acd4-de1884942a52
2008-12-06jquery.jgrowl.css > growl.csssuVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26021 d0d07461-0603-4401-acd4-de1884942a52
2008-12-06変更通知framework.& それを利用したGrowl風plugin(途中)suVene
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26017 d0d07461-0603-4401-acd4-de1884942a52
">return _interface; } } for (let i in Ci){ if (i == 'nsISupports' || i == 'IDispatch') continue; let obj; try { obj = cl.QueryInterface(Ci[i]); } catch (e){ continue; } if (obj){ _interface[i] = new XPInterface(this.name, i); } } return _interface; }); } //}}} XPClass.prototype = { //{{{ get number() Cc[this.name].number, has: function(filter){ var flag = false; if (filter instanceof RegExp){ for (let i in this.interface){ if(flag = filter.test(i)) break; } } else { flag = (interface in this.interface); } return flag; }, toString: function() this.name }; //}}} function XPInterface(c, i){ //{{{ this.interface = Ci[i]; this.class = Cc[c]; } //}}} XPInterface.prototype = { //{{{ get number() this.interface.number, get name() this.interface.name, get classNumber() this.class.number, get className() this.class.name, toString: function() this.name + ' of ' + this.className, create: function(){ var instance; try { instance = this.class.createInstance(this.interface); } catch (e){ try { instance = this.class.getService(this.interface); }catch (e){} } return instance; } }; //}}} function toKey(str) str.replace(/\W(.)/g, function(m, p) p.toUpperCase()); var tree = {}; for (let c in Cc){ let key = toKey(c); tree[key] = new XPClass(c); tree[c] = tree[key]; } // ---------------------------------------------- // Commands // ---------------------------------------------- commands.addUserCommand(['lscc'], 'List XPCOM class', function(args){ if (!args.length){ liberator.echoerr('No arguments'); return; } if (args.length == 1){ liberator.echo(liberator.XPCOM.listClass(args[0], null, true), true); } else if (args[1] in Ci){ let instance = tree[toKey(args[0])].interface[args[1]].create(); liverator.echo(liberator.modules.util.objectToString(instance, true), true); } else { liberator.echo(liberator.XPCOM.listClass(args[0], args[1], true), true); } }, { completer: function(context, args){ if (!args.length) return; var list = []; var position = 0; var reg; if (args.length == 1){ 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){ 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; } context.title = ['Name', 'Number']; context.advance(position); context.completions = list; } } ); var manager = { get all() tree, toKey: function(class) toKey(class), toHTML: function(list){ var str = ['<dl>']; list.forEach(function(o){ str.push('<dt>' + o.name + ' ' + o.number + '</dt>'); if (o.interface){ for (let i in o.interface){ str.push('<dd>' + o.interface[i].name + ' ' + o.interface[i].number + '</dd>'); } } else { for (let member in o){ str.push('<dd>' + member + ': ' + o[member] + '</dd>'); } } }); str.push('</dl>'); return str.join(''); }, listClass: function(cFilter, iFilter, format){ var classes = {}; if (!cFilter) return null; cReg = new RegExp(cFilter, 'i'); iReg = new RegExp((iFilter ? iFilter : '.*'), 'i'); for (let c in tree){ if (cReg.test(tree[c].name) && tree[c].has(iReg)){ classes[tree[c].name] = tree[c]; } } var list = [i for each (i in classes)]; if (format) return this.toHTML(list); return list; }, listInterface: function(iFilter, format){ var list = []; if (!iFilter) return null; iReg = new RegExp(iFilter, 'i'); for (let i in Ci){ if (iReg.test(i)) list.push(Ci[i]); } if (format) return this.toHTML(list); return list; } }; return manager; })(); // vim: sw=4 ts=4 sts=0 fdm=marker noet: