diff options
| author | suVene | 2008-12-08 18:04:17 +0000 | 
|---|---|---|
| committer | suVene | 2008-12-08 18:04:17 +0000 | 
| commit | 4012d388f4e4698ac13e30f0d8d3c310cdfe55d5 (patch) | |
| tree | a5759baaed32f98fefc96af30d3b930d4675e9e8 /notifier | |
| parent | a9eaeea1f3d7fdff871a94801d7b278b5def26ba (diff) | |
| download | vimperator-plugins-4012d388f4e4698ac13e30f0d8d3c310cdfe55d5.tar.bz2 | |
*SubjectHttp定義.
*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
Diffstat (limited to 'notifier')
| -rw-r--r-- | notifier/observer_growl.js | 60 | ||||
| -rw-r--r-- | notifier/subject_hatelabo_bottle.js | 89 | 
2 files changed, 76 insertions, 73 deletions
diff --git a/notifier/observer_growl.js b/notifier/observer_growl.js index e8d61e5..0a3d1d3 100644 --- a/notifier/observer_growl.js +++ b/notifier/observer_growl.js @@ -1,17 +1,17 @@ -/** - * notifier.js plugin observer - * @name            observer_growl.js - * @description     growl when notified. - * @description-ja  Growl風通知。 - * @author          suVene suvene@zeromemory.info - * @version         0.1.0 - * Last Change:     07-Dec-2008. - * - * use jQuery - *   http://jquery.com/ - * use JGrowl - *   http://stanlemon.net/projects/jgrowl.html - */ +// PLUGIN_INFO//{{{ +var PLUGIN_INFO = +<VimperatorPlugin> +    <name>{name}</name> +    <description>notification from the subjects is notified to you by the Growl style.</description> +    <description lang="ja">Growl風通知。</description> +    <author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author> +    <version>0.1.0</version> +    <minVersion>2.0pre</minVersion> +    <maxVersion>2.0pre</maxVersion> +    <detail><![CDATA[ +    ]]></detail> +</VimperatorPlugin>; +//}}}  (function() {  var notifier = liberator.plugins.notifier; @@ -28,22 +28,23 @@ Growl.prototype = {      defaults: {          life: 5000      }, -    initialize: function(dom, container) { +    initialize: function(dom, container, options) {          this.dom = dom;          this.container = container;          this.created = new Date(); -        this.life = this.defaults.life; +        this.options = $U.extend(this.defaults, (options || {})); +        this.life = this.options.life;          dom.childNodes[0].addEventListener("click", $U.bind(this, this.remove), false);      },      remove: function() { +        // TODO: animation!!!!          this.container.removeChild(this.dom);      },  }//}}} -notifier.observer.register({ +notifier.observer.register(notifier.Observer, {      initialize: function () { -        logger.log('initialize');          this.count = 1;          io.getRuntimeDirectories('').forEach(function(dir) { @@ -59,7 +60,6 @@ notifier.observer.register({          });      },      update: function(message) { -        logger.log('update:' + this.count);          var doc = window.content.document;          var container = doc.getElementById("observer_growl"); @@ -68,8 +68,9 @@ notifier.observer.register({              container = doc.getElementById("observer_growl");          } -        this.createPopup(doc, message, container); -        container.appendChild(this.createPopup(doc, message, container)); +        var notification = this.createPopup(message, doc, container); +        // TODO: animation!!! +        container.appendChild(notification);          if (container.childNodes.length == 1) {              let interval = setInterval($U.bind(this, this.checkStatus), 1000); @@ -78,17 +79,16 @@ notifier.observer.register({          this.count++;      }, -    createPopup: function(doc, message, nodes) { +    createPopup: function(message, doc, nodes) {          var dom;          var html = -        <div class="observer_growl_notification" style="display: block;"> -            <div class="close">×</div> -            <div class="header">{util.escapeHTML(this.count + ': ' + message.title)}</div> -            <div class="message">{util.escapeHTML(message.message)}</div> -        </div>; +            <div class="observer_growl_notification" style="display: block;"> +                <div class="close">×</div> +                <div class="header">{new XMLList(this.count + ': ' + message.title)}</div> +                <div class="message">{new XMLList(message.message || '')}</div> +            </div>;          dom = util.xmlToDom(html, doc, nodes); -        dom.__data__ = new Growl(dom, nodes); - +        dom.__data__ = new Growl(dom, nodes, message.options.growl);          return dom;      },      checkStatus: function() { @@ -106,7 +106,7 @@ notifier.observer.register({                  removeNodes.push(item);              }          } -        removeNodes.forEach(function(n) container.removeChild(n)); +        removeNodes.forEach(function(element) element.__data__.remove());          if (container.childNodes.length == 0)              clearInterval(container.__interval__); diff --git a/notifier/subject_hatelabo_bottle.js b/notifier/subject_hatelabo_bottle.js index 9c4914d..6c4a330 100644 --- a/notifier/subject_hatelabo_bottle.js +++ b/notifier/subject_hatelabo_bottle.js @@ -1,12 +1,17 @@ -/** - * notifier.js plugin subject - * @name            subject_hatena_bottle.js - * @description     notify if hatena bottle changed. - * @description-ja  はてなボトルの変更通知。 - * @author          suVene suvene@zeromemory.info - * @version         0.1.0 - * Last Change:     08-Dec-2008. - */ +// PLUGIN_INFO//{{{ +var PLUGIN_INFO = +<VimperatorPlugin> +    <name>{name}</name> +    <description>notifies if hatena bottle was changed.</description> +    <description lang="ja">はてなボトルの変更通知。</description> +    <author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author> +    <version>0.1.0</version> +    <minVersion>2.0pre</minVersion> +    <maxVersion>2.0pre</maxVersion> +    <detail><![CDATA[ +    ]]></detail> +</VimperatorPlugin>; +//}}}  (function() {  var notifier = liberator.plugins.notifier; @@ -17,22 +22,14 @@ var $U = libly.$U;  var logger = $U.getLogger('subject_hatelabo_bottle');  var URL = 'http://bottle.hatelabo.jp'; +//var URL = 'http://localhost/index.html?a'; -notifier.subject.register({ -    interval: 30, -    initialize: function() { -        this.count = 0; -        this.initialized = false; -        this.cache; - -        var req = new libly.Request(URL); -        req.addEventListener('onSuccess', $U.bind(this, function(res) { -            logger.log('initialized'); -            this.cache = this.parse(res); -            if (this.cache) -                this.initialized = true; -        })); -        req.get(); +notifier.subject.register(notifier.SubjectHttp, { +    interval: 40, +    options: { +        url: URL, +        headers: null, +        extra: null      },      parse: function(res) { @@ -44,31 +41,37 @@ notifier.subject.register({          if (!dom) return ret;          ret = []; -        for (let i = 0, len < dom.childNodes.length; i < len; i++) { +        for (let i = 0, len = dom.childNodes.length; i < len; i++) {              ret.push(dom.childNodes[i]);          }          return ret;      }, -    check: function() { - -        if (!this.initialized) return; - -        this.count++; -        logger.log('check'); -        var req = new libly.Request(URL); -        req.addEventListener('onSuccess', $U.bind(this, function(res) { -            var text = res.responseText; -            logger.log('success!! '); -            var message = new notifier.Message('TEST', text); -            this.notify(message); +    diff: function(cache, parsed) { +        var ret = []; +        parsed.forEach(function(element) { +           if (!cache.some(function(c) { if (c.toString() == element.toString()) return true })) +               ret.push(element);  +        }); -            if (this.count == 5) { -                notifier.subject.unregister(this); -                this.count = 0; -            } -        })); -        req.get(); +        return ret; +        var text = (new XMLSerializer()).serializeToString(parsed[0]) +                            .replace(/<[^>]+>/g, function(all) all.toLowerCase()) +                            .replace(/<!--(?:[^-]|-(?!->))*-->/g, ''); // actually +        return text; +    }, +    buildMessages: function(diff) { +        var ret = []; +        diff.forEach(function(d) { +            ret.push( +                new notifier.Message('Hatelab bottle', $U.xmlSerialize(d), { +                        growl: { +                            life: 7000 +                        } +                }) +            ); +        }); +        return ret;      }  });  | 
