From fd596c870dbacce1f31bcf5cd58281931744c4a8 Mon Sep 17 00:00:00 2001 From: suVene Date: Fri, 2 Jan 2009 18:22:47 +0000 Subject: add "subject_liberator_echomsg.js". git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27801 d0d07461-0603-4401-acd4-de1884942a52 --- notifier.js | 9 ++++- notifier/subject_liberator_echomsg.js | 71 +++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) create mode 100755 notifier/subject_liberator_echomsg.js diff --git a/notifier.js b/notifier.js index 7028d7a..d231b3f 100644 --- a/notifier.js +++ b/notifier.js @@ -11,7 +11,7 @@ var PLUGIN_INFO = change notice framework. 変更通知フレームワーク。 suVene - 0.1.5 + 0.1.6 MIT 2.0pre 2.0pre @@ -92,10 +92,15 @@ check(): 指定したインターバルごとにフレームワークによって呼び出されます。 変更を検知した場合、liberator.plugins.notifier.Message のインスタンスを引数に this.notify(message) を呼び出してください。 +shutdown(): + 必要の無い場合、実装しなくても OK です。 + 変更通知フレームワークの終了時に呼ばれます。 ==== librator.plugins.notifier.SubjectHttp ==== Httpを利用した変更検知の基底クラスです。 リクエスト内容をキャッシュします。 +interval: + 秒で変更チェックするインターバルを指定します。デフォルトは 60 です。 options{}: url: URL を指定します。 @@ -270,7 +275,7 @@ function bootstrap() { var req = new libly.Request( this.options.url, this.options.headers, - $U.extend({ asynchronous: false }, this.options.extra) + $U.extend({ asynchronous: true }, this.options.extra) ); req.addEventListener('onSuccess', $U.bind(this, function(res) { var parsed, diff; diff --git a/notifier/subject_liberator_echomsg.js b/notifier/subject_liberator_echomsg.js new file mode 100755 index 0000000..c435474 --- /dev/null +++ b/notifier/subject_liberator_echomsg.js @@ -0,0 +1,71 @@ +/*** BEGIN LICENSE BLOCK {{{ + Copyright (c) 2009 suVene + + distributable under the terms of an MIT-style license. + http://www.opensource.jp/licenses/mit-license.html +}}} END LICENSE BLOCK ***/ +// PLUGIN_INFO//{{ +var PLUGIN_INFO = + + {NAME} + liberator.echomsg notice. + liberator.echomsg 通知。 + suVene + 0.1.0 + MIT + 2.0pre + 2.0pre + http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/notifier/subject_liberator_echomsg.js +; +//}}} +(function() { + +var notifier = liberator.plugins.notifier; +if (!notifier) return; + +var libly = notifier.libly; +var $U = libly.$U; +var logger = $U.getLogger('subject_liberator_echomsg'); + +notifier.subject.register(notifier.Subject, { + interval: 5, + initialize: function() { + this.original = liberator.echomsg; + this.__updating__ = false; + this.messages = []; + + var self = this; + + liberator.echomsg = function(message) { + while (self.waiting) + liberator.sleep(100); + + logger.log('message: ' + message); + self.messages.push(message); + return self.original.apply(null, arguments); + }; + }, + check: function() { + try { + this.__updating__ = true; + if (!this.messages.length) return; + + var msg = ''; + this.messages = []; + + this.notify(new notifier.Message('liberator.echomsg', msg)); + + } finally { + this.__updating__ = false; + } + }, + shutdown: function() { + liberator.echomsg = this.original; + this.__updating__ = false; + } + +}); + +})(); +// vim: set fdm=marker sw=4 ts=4 sts=0 et: + -- cgit v1.2.3