Merge pull request #321 from MayhemYDG/master
Superior array manipulation
This commit is contained in:
commit
6fa93a7259
@ -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);
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user