var PLUGIN_INFO = {NAME} Vimperator plugin for Greasemonkey teramako 0.6c 2.0pre 2.0pre https://github.com/vimpr/vimperator-plugins/raw/master/gmperator.js (: - filename : {String} - name : {String} - namespace : {String} - description: {String} - enabled : {Boolean} - includes : {String[]} - encludes : {String[]} ) ]]> ; (function(){ const Cc = Components.classes; const Ci = Components.interfaces; const gmID = '@greasemonkey.mozdev.org/greasemonkey-service;1'; if (!Cc[gmID]){ liberator.log('Greasemonkey is not installed',0); return; } liberator.plugins.gmperator = (function(){ //{{{ // ----------------------- // PUBLIC section // ----------------------- // {{{ var manager = { register: function (uri,sandbox,script){ var panelID = getPanelID(sandbox.window); if (!panelID) return; var gmCon; if (containers[panelID] && containers[panelID].uri == uri){ gmCon = containers[panelID]; } else { gmCon = new GmContainer(uri,sandbox); containers[panelID] = gmCon; this.__defineGetter__(panelID,function() gmCon); //liberator.log('gmpeartor: Registered: ' + panelID + ' - ' + uri,8); } gmCon.sandbox = sandbox; gmCon.addScript(script); gmCon.uri = uri; triggerGMEvent('GMInjectedScript',uri,script._filename); if (panelID == this.currentPanel){ triggerGMEvent('GMActiveScript',uri,script._filename); } }, get gmScripts() GM_getConfig().scripts, get allItem() containers, get currentPanel() getBrowser().mCurrentTab.linkedPanel, get currentContainer() containers[this.currentPanel] || null, get currentSandbox(){ var id = this.currentPanel; return containers[id] ? containers[id].sandbox : null; }, getSandboxFromWindow: function(win){ for each (let c in containers){ if (c.sandbox.window == win) return sandbox; } return null; }, getContainersFromURI: function(uri){ var list = []; for each (let c in containers){ if (c.uri == uri) list.push(c); } return list.length > 0 ? list : null; } }; // }}} // ----------------------- // PRIVATE section // ----------------------- // {{{ var containers = {}; var gmSvc = Cc[gmID].getService().wrappedJSObject; function appendCode(target,name,func){ var original = target[name]; target[name] = function(){ var tmp = original.apply(target,arguments); func.apply(this,arguments); return tmp; }; } appendCode(gmSvc,'evalInSandbox',function(code,uri,sandbox,script){ liberator.plugins.gmperator.register(uri,sandbox,script); }); function getPanelID(win){ var tabs = getBrowser().mTabs; for (let i=0,l=tabs.length; i homepage="http://zeromemory.sblo.jp/">suVene</author> <version>0.1.2</version> <license>MIT</license> <minVersion>2.0pre</minVersion> <maxVersion>2.0pre</maxVersion> <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/notifier/subject_hatelabo_bottle.js</updateURL> </VimperatorPlugin>; //}}} (function() { var notifier = liberator.plugins.notifier; if (!notifier) return; var libly = notifier.libly; var $U = libly.$U; var logger = $U.getLogger('subject_hatelabo_bottle'); var URL = 'http://bottle.hatelabo.jp'; notifier.subject.register(notifier.SubjectHttp, { interval: 60, options: { url: URL, headers: null, extra: null }, parse: function(res) { // if (this.count == 0) return []; // for debug var doc = res.getHTMLDocument('id("body")//div[contains(concat(" ", @class, " "), " entry ")]'); return doc; }, diff: function(cache, parsed) parsed.filter(function(element) !cache.some(function(c) c.textContent == element.textContent)), buildMessages: function(diff) { return diff.map($U.bind(this, function(d) { var permalink = $U.getFirstNodeFromXPath('descendant::a[@class="hatena-star-uri"]', d); if (permalink) permalink = URL + permalink; return new notifier.Message('Hatelabo bottle', $U.xmlSerialize(d), permalink) })); } }); })(); // vim: set fdm=marker sw=4 ts=4 sts=0 et: .name,s.description]); candidates.push([s._filename,s.description]); } } } else { for each (let s in scripts){ if (isAll || s._filename.indexOf(filter) == 0) { candidates.push([s._filename,s.description]); } } } return [0,candidates]; } //}}} })(); // vim: fdm=marker sw=4 ts=4 et: