aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsuVene2009-01-04 00:53:27 +0000
committersuVene2009-01-04 00:53:27 +0000
commit9e6e587e50efa8edff91307f4b6ebaa4cd6233db (patch)
tree8eeb6c8059954f1a5287d382153322654a736ea2
parent1cb3e00c80a10947c821f47e162280c75295efcf (diff)
downloadvimperator-plugins-9e6e587e50efa8edff91307f4b6ebaa4cd6233db.tar.bz2
- remove判定整理。
- sticky_keyword → sticky_keywords 変更。 - liberator.echomsg の filter 実装。 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27851 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r--_libly.js4
-rw-r--r--notifier/observer_growl.js56
-rwxr-xr-xnotifier/subject_liberator_echomsg.js14
3 files changed, 46 insertions, 28 deletions
diff --git a/_libly.js b/_libly.js
index f7067e0..54bb042 100644
--- a/_libly.js
+++ b/_libly.js
@@ -12,7 +12,7 @@ var PLUGIN_INFO =
<description lang="ja">適当なライブラリっぽいものたち。</description>
<author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
<license>MIT</license>
- <version>0.1.17</version>
+ <version>0.1.18</version>
<minVersion>1.2</minVersion>
<maxVersion>2.0pre</maxVersion>
<updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/_libly.js</updateURL>
@@ -179,7 +179,7 @@ libly.$U = {//{{{
var d = {
y: dtm.getFullYear(),
M: dtm.getMonth() + 1,
- d: dtm.getDay(),
+ d: dtm.getDate(),
h: dtm.getHours(),
m: dtm.getMinutes(),
s: dtm.getSeconds(),
diff --git a/notifier/observer_growl.js b/notifier/observer_growl.js
index 8142122..1c54db3 100644
--- a/notifier/observer_growl.js
+++ b/notifier/observer_growl.js
@@ -11,7 +11,7 @@ var PLUGIN_INFO =
<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.5</version>
+ <version>0.1.6</version>
<license>MIT</license>
<minVersion>2.0pre</minVersion>
<maxVersion>2.0pre</maxVersion>
@@ -23,7 +23,7 @@ liberator.globalVariables.observer_growl_settings = {
'message title': {
life: number, // sec (10 sec by default)
sticky: bool, // true or false (false by default)
- sticky_keyword: [ // keyword ary
+ sticky_keywords: [ // keyword ary
'keyword1',
'keyword2'
],
@@ -36,14 +36,13 @@ e.g.)
>||
javascript <<EOM
liberator.globalVariables.observer_growl_settings = {
- 'Hatelabo bottle': { life: 20, sticky_keyword: 'はてな' },
+ 'Hatelabo bottle': { life: 20, sticky_keywords: ['はてな'] },
'Weather forecast by Yahoo!': { sticky: true }
};
EOM
||<
-== Todo ==
-- sticky_keyword
+== ToDo ==
- hide
]]></detail>
</VimperatorPlugin>;
@@ -61,16 +60,17 @@ var Growl = function() {//{{{
this.initialize.apply(this, arguments);
};
Growl.prototype = {
- initialize: function(node, options) {
+ initialize: function(node, options, message) {
this.defaults = {
life: 10,
sticky: false,
- sticky_keyword: [],
+ sticky_keywords: [],
hide: false
};
this.node = node;
this.created = new Date();
this.options = $U.extend(this.defaults, (options || {}));
+ this.message = message;
var div = node.getElementsByTagName('div');
div[0].addEventListener("click", $U.bind(this, this.remove), false);
},
@@ -149,7 +149,7 @@ notifier.observer.register(notifier.Observer, {
<div class="message">{new XMLList(message.message || '')}</div>
</div>;
node = $U.xmlToDom(html, doc);
- node.__data__ = new Growl(node, this.settings[message.title]);
+ node.__data__ = new Growl(node, this.settings[message.title], message);
return node;
},
checkStatus: function(force) {
@@ -163,23 +163,15 @@ notifier.observer.register(notifier.Observer, {
for (let i = 0, len = container.childNodes.length; i < len; i++) {
let item = container.childNodes[i];
let growl = item.__data__;
- if (force ||
- (growl &&
- !(growl.options.sticky ||
- growl.options.sticky_keyword.some(function(keyword) this.indexOf(keyword) > -1, item.childNodes[2].textContent)) &&
- growl.created &&
- growl.created.getTime() + (growl.options.life * 1000) < (new Date()).getTime()
- )
- ) {
- if (item.id != 'observer_growl_closer')
- removeNodes.push(item);
- }
- if (len == 1) {
- let elem = container.childNodes[0];
- if (elem.id == 'observer_growl_closer')
- elem.parentNode.removeChild(elem);
+ if (item.id == 'observer_growl_closer') {
+ if (len == 1)
+ item.parentNode.removeChild(item);
+ continue;
}
+
+ if (force || this.canRemove(growl))
+ removeNodes.push(item);
}
removeNodes.forEach(function(element) element.__data__.remove());
@@ -189,10 +181,26 @@ notifier.observer.register(notifier.Observer, {
}
},
+ canRemove: function(growl) {
+ var ret = false;
+
+ if (!growl || !growl.created) return ret;
+ if (growl.options.sticky) return ret;
+
+ var text = growl.message.title + ' ' + growl.message.message.replace(/<.*?>/g, '');
+ if (growl.options.sticky_keywords.some(function(k) text.indexOf(k) > -1)) return ret;
+
+ if (growl.created.getTime() + (growl.options.life * 1000) > (new Date()).getTime())
+ return ret;
+
+ ret = true;
+ return ret;
+ },
removeAll: function(a) {
this.checkStatus('EVENT_REMOVE_ALL');
var closer = window.content.document.getElementById("observer_growl_closer");
- closer.parentNode.removeChild(closer);
+ if (closer)
+ closer.parentNode.removeChild(closer);
},
shutdown: function() {
for (let [id, flg] in Iterator(this.intervalIDs)) {
diff --git a/notifier/subject_liberator_echomsg.js b/notifier/subject_liberator_echomsg.js
index c435474..5c963ef 100755
--- a/notifier/subject_liberator_echomsg.js
+++ b/notifier/subject_liberator_echomsg.js
@@ -11,11 +11,20 @@ var PLUGIN_INFO =
<description>liberator.echomsg notice.</description>
<description lang="ja">liberator.echomsg 通知。</description>
<author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
- <version>0.1.0</version>
+ <version>0.1.1</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_liberator_echomsg.js</updateURL>
+ <detail><![CDATA[
+== Settings ==
+>||
+liberator.globalVariables.subject_liberator_echomsg_filter = [
+ 'Auto commands for',
+ '^autocommand'
+];
+||<
+ ]]></detail>
</VimperatorPlugin>;
//}}}
(function() {
@@ -33,6 +42,7 @@ notifier.subject.register(notifier.Subject, {
this.original = liberator.echomsg;
this.__updating__ = false;
this.messages = [];
+ this.filter = liberator.globalVariables.subject_liberator_echomsg_filter || [];
var self = this;
@@ -40,7 +50,6 @@ notifier.subject.register(notifier.Subject, {
while (self.waiting)
liberator.sleep(100);
- logger.log('message: ' + message);
self.messages.push(message);
return self.original.apply(null, arguments);
};
@@ -48,6 +57,7 @@ notifier.subject.register(notifier.Subject, {
check: function() {
try {
this.__updating__ = true;
+ this.messages = this.messages.filter(function(m) !this.filter.some(function(f) (m.indexOf(f) > -1 || m.match(f))), this);
if (!this.messages.length) return;
var msg = '<ul><li>' + this.messages.join('</li><li>') + '</li></ul>';