Merge pull request #321 from MayhemYDG/master

Superior array manipulation
This commit is contained in:
James Campos 2011-10-10 12:46:03 -07:00
commit 6fa93a7259
2 changed files with 49 additions and 86 deletions

View File

@ -539,45 +539,29 @@
f = filter.match(/^\/(.+)\/(\w*)$/); f = filter.match(/^\/(.+)\/(\w*)$/);
this.regexps[key].push(RegExp(f[1], f[2])); this.regexps[key].push(RegExp(f[1], f[2]));
} }
if (this.regexps[key].length) { this.callbacks.push(this[key]);
this.callbacks.push(this[key]);
}
} }
return g.callbacks.push(this.node); return g.callbacks.push(this.node);
}, },
node: function(root) { node: function(root) {
var callback, _i, _j, _len, _len2, _ref, _ref2; if (!root.className) {
if (root.className === 'op') { if (filter.callbacks.some(function(callback) {
if (!g.REPLY && conf['Filter OPs']) { return callback(root);
_ref = filter.callbacks; })) {
for (_i = 0, _len = _ref.length; _i < _len; _i++) { return replyHiding.hideHide($('td:not([nowrap])', root));
callback = _ref[_i];
if (callback(root)) {
threadHiding.hideHide(root.parentNode);
return;
}
}
} }
} else if (!root.classList.contains('inline')) { } else if (root.className === 'op' && !g.REPLY && conf['Filter OPs']) {
_ref2 = filter.callbacks; if (filter.callbacks.some(function(callback) {
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { return callback(root);
callback = _ref2[_j]; })) {
if (callback(root)) { return threadHiding.hideHide(root.parentNode);
replyHiding.hideHide($('td:not([nowrap])', root));
return;
}
} }
} }
}, },
test: function(key, value) { test: function(key, value) {
var regexp, _i, _len, _ref; return filter.regexps[key].some(function(regexp) {
_ref = filter.regexps[key]; return regexp.test(value);
for (_i = 0, _len = _ref.length; _i < _len; _i++) { });
regexp = _ref[_i];
if (regexp.test(value)) {
return true;
}
}
}, },
name: function(root) { name: function(root) {
var name; var name;
@ -2448,7 +2432,7 @@
_ref = $$('input', table); _ref = $$('input', table);
for (_i = 0, _len = _ref.length; _i < _len; _i++) { for (_i = 0, _len = _ref.length; _i < _len; _i++) {
inlined = _ref[_i]; inlined = _ref[_i];
if (hidden = $.id(inlined.name)) { if (!(hidden = $.id(inlined.name)).classList.contains('op')) {
$.x('ancestor::table[1]', hidden).hidden = false; $.x('ancestor::table[1]', hidden).hidden = false;
} }
} }
@ -2712,24 +2696,11 @@
unreadSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUOMtj+P//PwMlmIEqBkDBfxie2NdVVVFaMikzPXsuCIPYIDFkNWANSAb815t+GI5B/Jj8iQfjapafBWEQG5saDBegK0ja8Ok9EH/AJofXBTBFlUf+/wPi/7jkcYYBCLef/v9/9pX//+cAMYiNLo/uAgZQYMVVLzsLcnYF0GaQ5otv/v+/9BpiEEgMJAdSA1JLlAGXgAZcfoNswGfcBpQDowoW2vi8AFIDUothwOQJvVXIgYUrEEFsqFoGYqLxA7HRiNUAWEIiyQBkGpaUsclhMwCWFpBpvHJUyY0AmdYZKFRtAsoAAAAASUVORK5CYII%3D', unreadSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN9JREFUOMtj+P//PwMlmIEqBkDBfxie2NdVVVFaMikzPXsuCIPYIDFkNWANSAb815t+GI5B/Jj8iQfjapafBWEQG5saDBegK0ja8Ok9EH/AJofXBTBFlUf+/wPi/7jkcYYBCLef/v9/9pX//+cAMYiNLo/uAgZQYMVVLzsLcnYF0GaQ5otv/v+/9BpiEEgMJAdSA1JLlAGXgAZcfoNswGfcBpQDowoW2vi8AFIDUothwOQJvVXIgYUrEEFsqFoGYqLxA7HRiNUAWEIiyQBkGpaUsclhMwCWFpBpvHJUyY0AmdYZKFRtAsoAAAAASUVORK5CYII%3D',
unreadNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOBJREFUOMtj+P//PwMlmIEqBkDBfxie2DWxqqykYlJ6dtZcEAaxQWLIasAakAz4n3bGGI5B/JiJ8QfjlsefBWEQG5saDBegKyj5lPQeiD9gk8PrApiinv+V/4D4Py55nGEAwrP+t/9f/X82EM8Bs9Hl0V3AAAqsuGXxZ0HO7vlf8Q+k+eb/i0B8CWwQSAwkB1IDUkuUAbeAmm/9v4ww4DMeA8pKyifBQhufF0BqQGoxDJjcO7kKObBwBSKIDVXLQEw0fiA2GrEaAEtIJBmATMOSMjY5bAbA0gIyjVeOKrkRAMefDK/b7ecEAAAAAElFTkSuQmCC', unreadNSFW: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOBJREFUOMtj+P//PwMlmIEqBkDBfxie2DWxqqykYlJ6dtZcEAaxQWLIasAakAz4n3bGGI5B/JiJ8QfjlsefBWEQG5saDBegKyj5lPQeiD9gk8PrApiinv+V/4D4Py55nGEAwrP+t/9f/X82EM8Bs9Hl0V3AAAqsuGXxZ0HO7vlf8Q+k+eb/i0B8CWwQSAwkB1IDUkuUAbeAmm/9v4ww4DMeA8pKyifBQhufF0BqQGoxDJjcO7kKObBwBSKIDVXLQEw0fiA2GrEaAEtIJBmATMOSMjY5bAbA0gIyjVeOKrkRAMefDK/b7ecEAAAAAElFTkSuQmCC',
update: function() { update: function() {
var clone, favicon, href, l; var clone, favicon, l;
l = unread.replies.length; l = unread.replies.length;
if (g.dead) {
if (l > 0) {
href = Favicon.unreadDead;
} else {
href = Favicon.dead;
}
} else {
if (l > 0) {
href = Favicon.unread;
} else {
href = Favicon["default"];
}
}
favicon = $('link[rel="shortcut icon"]', d.head); favicon = $('link[rel="shortcut icon"]', d.head);
favicon.href = g.dead ? l ? Favicon.unreadDead : Favicon.dead : l ? Favicon.unread : Favicon["default"];
clone = favicon.cloneNode(true); clone = favicon.cloneNode(true);
clone.href = href;
return $.replace(favicon, clone); return $.replace(favicon, clone);
} }
}; };
@ -2779,16 +2750,12 @@
return location.href = url; return location.href = url;
}; };
nodeInserted = function(e) { nodeInserted = function(e) {
var callback, target, _i, _len, _ref, _results; var target;
target = e.target; target = e.target;
if (target.nodeName === 'TABLE') { if (target.nodeName === 'TABLE') {
_ref = g.callbacks; return g.callbacks.forEach(function(callback) {
_results = []; return callback(target);
for (_i = 0, _len = _ref.length; _i < _len; _i++) { });
callback = _ref[_i];
_results.push(callback(target));
}
return _results;
} }
}; };
imgHover = { imgHover = {
@ -3131,7 +3098,7 @@
expandComment.init(); expandComment.init();
} }
} }
nodes = $$('.op').concat($$('a + table')); nodes = $$('.op, a + table');
g.callbacks.forEach(function(callback) { g.callbacks.forEach(function(callback) {
return nodes.forEach(callback); return nodes.forEach(callback);
}); });
@ -3408,6 +3375,6 @@
if (d.body) { if (d.body) {
Main.init(); Main.init();
} else { } else {
$.bind(document, 'DOMContentLoaded', Main.init); $.bind(d, 'DOMContentLoaded', Main.init);
} }
}).call(this); }).call(this);

View File

@ -393,25 +393,20 @@ filter =
f = filter.match /^\/(.+)\/(\w*)$/ f = filter.match /^\/(.+)\/(\w*)$/
@regexps[key].push RegExp f[1], f[2] @regexps[key].push RegExp f[1], f[2]
#only execute what's filterable #only execute what's filterable
@callbacks.push @[key] if @regexps[key].length @callbacks.push @[key]
g.callbacks.push @node g.callbacks.push @node
node: (root) -> node: (root) ->
if root.className is 'op' unless root.className
if !g.REPLY and conf['Filter OPs'] if filter.callbacks.some((callback) -> callback root)
for callback in filter.callbacks replyHiding.hideHide $ 'td:not([nowrap])', root
if callback root else if root.className is 'op' and not g.REPLY and conf['Filter OPs']
threadHiding.hideHide root.parentNode if filter.callbacks.some((callback) -> callback root)
return threadHiding.hideHide root.parentNode
else unless root.classList.contains 'inline'
for callback in filter.callbacks
if callback root
replyHiding.hideHide $ 'td:not([nowrap])', root
return
test: (key, value) -> test: (key, value) ->
for regexp in filter.regexps[key] filter.regexps[key].some (regexp) -> regexp.test value
return true if regexp.test value
name: (root) -> name: (root) ->
name = if root.className is 'op' then $ '.postername', root else $ '.commentpostername', root name = if root.className is 'op' then $ '.postername', root else $ '.commentpostername', root
@ -1821,7 +1816,7 @@ quoteInline =
#select the corresponding table or loading td #select the corresponding table or loading td
table = $.x "following::*[@id='i#{id}']", q table = $.x "following::*[@id='i#{id}']", q
for inlined in $$ 'input', table for inlined in $$ 'input', table
if hidden = $.id inlined.name unless (hidden = $.id inlined.name).classList.contains 'op'
$.x('ancestor::table[1]', hidden).hidden = false $.x('ancestor::table[1]', hidden).hidden = false
$.rm table $.rm table
@ -1992,6 +1987,7 @@ Favicon =
{href} = favicon {href} = favicon
Favicon.default = href Favicon.default = href
Favicon.unread = if /ws/.test href then Favicon.unreadSFW else Favicon.unreadNSFW Favicon.unread = if /ws/.test href then Favicon.unreadSFW else Favicon.unreadNSFW
dead: 'data:image/gif;base64,R0lGODlhEAAQAKECAAAAAP8AAP///////yH5BAEKAAIALAAAAAAQABAAAAIvlI+pq+D9DAgUoFkPDlbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==' dead: 'data:image/gif;base64,R0lGODlhEAAQAKECAAAAAP8AAP///////yH5BAEKAAIALAAAAAAQABAAAAIvlI+pq+D9DAgUoFkPDlbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw==' empty: 'data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAP///9vb2////yH5BAEAAAMALAAAAAAQABAAAAIvnI+pq+D9DBAUoFkPFnbs7lFZKIJOJJ3MyraoB14jFpOcVMpzrnF3OKlZYsMWowAAOw=='
unreadDead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANhJREFUOMutU0EKwjAQzEPFgyBFei209gOKINh6tL3qO3yAB9OHWPTeMZsmJaRpiNjAkE1mMt1stgwA+wdsFgM1oHE4FXmSpWUcRzWBYtozNfKAYdCHCrQuosX9tlk+CBS7NKMMbMF7vXoJtC7Om8HwhXzbCWCSn6qBJHd74FIBVS1jm7czYFSsq7gvpY0s6+ThJwc4743EHnGkIW2YAW+AphkMPj6DJE1LXW3fFUhD2pHBsTznLKCIFCstC3nGNvQZnQa6kX4yMGfdyi7OZaB7wZy93Cx/4xfgv/s+XYFMrAAAAABJRU5ErkJggg%3D%3D' unreadDead: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANhJREFUOMutU0EKwjAQzEPFgyBFei209gOKINh6tL3qO3yAB9OHWPTeMZsmJaRpiNjAkE1mMt1stgwA+wdsFgM1oHE4FXmSpWUcRzWBYtozNfKAYdCHCrQuosX9tlk+CBS7NKMMbMF7vXoJtC7Om8HwhXzbCWCSn6qBJHd74FIBVS1jm7czYFSsq7gvpY0s6+ThJwc4743EHnGkIW2YAW+AphkMPj6DJE1LXW3fFUhD2pHBsTznLKCIFCstC3nGNvQZnQa6kX4yMGfdyi7OZaB7wZy93Cx/4xfgv/s+XYFMrAAAAABJRU5ErkJggg%3D%3D'
@ -2000,21 +1996,22 @@ Favicon =
update: -> update: ->
l = unread.replies.length l = unread.replies.length
if g.dead
if l > 0 favicon = $ 'link[rel="shortcut icon"]', d.head
href = Favicon.unreadDead favicon.href =
if g.dead
if l
Favicon.unreadDead
else
Favicon.dead
else else
href = Favicon.dead if l
else Favicon.unread
if l > 0 else
href = Favicon.unread Favicon.default
else
href = Favicon.default
#XXX `favicon.href = href` doesn't work on Firefox #XXX `favicon.href = href` doesn't work on Firefox
favicon = $ 'link[rel="shortcut icon"]', d.head
clone = favicon.cloneNode true clone = favicon.cloneNode true
clone.href = href
$.replace favicon, clone $.replace favicon, clone
redirect = -> redirect = ->
@ -2034,8 +2031,7 @@ redirect = ->
nodeInserted = (e) -> nodeInserted = (e) ->
{target} = e {target} = e
if target.nodeName is 'TABLE' if target.nodeName is 'TABLE'
for callback in g.callbacks g.callbacks.forEach (callback) -> callback target
callback target
imgHover = imgHover =
init: -> init: ->
@ -2369,7 +2365,7 @@ Main =
if conf['Comment Expansion'] if conf['Comment Expansion']
expandComment.init() expandComment.init()
nodes = $$('.op').concat $$ 'a + table' nodes = $$ '.op, a + table'
g.callbacks.forEach (callback) -> nodes.forEach callback g.callbacks.forEach (callback) -> nodes.forEach callback
$.bind $('form[name=delform]'), 'DOMNodeInserted', nodeInserted $.bind $('form[name=delform]'), 'DOMNodeInserted', nodeInserted
options.init() options.init()
@ -2642,4 +2638,4 @@ Main =
if d.body if d.body
Main.init() Main.init()
else else
$.bind document, 'DOMContentLoaded', Main.init $.bind d, 'DOMContentLoaded', Main.init