From ca9abdc4e74d16fefb4ad228519869c7bf8444cb Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Fri, 14 Mar 2014 16:02:19 -0700 Subject: [PATCH] Remove Main.callbacknodes --- LICENSE | 2 +- builds/4chan-X.user.js | 102 +++++++++----------------- builds/crx/script.js | 102 +++++++++----------------- src/General/Get.coffee | 6 +- src/General/Index.coffee | 8 +- src/General/Main.coffee | 32 +------- src/General/Navigate.coffee | 4 +- src/General/lib/callbacks.class | 26 ++++--- src/Miscellaneous/ExpandThread.coffee | 2 +- src/Monitoring/ThreadUpdater.coffee | 2 +- 10 files changed, 103 insertions(+), 183 deletions(-) diff --git a/LICENSE b/LICENSE index eb5cb1546..d1b2d202a 100755 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ /* -* 4chan X - Version 1.4.1 - 2014-03-13 +* 4chan X - Version 1.4.1 - 2014-03-14 * * Licensed under the MIT license. * https://github.com/Spittie/4chan-x/blob/master/LICENSE diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 675a73f8b..6baa07b78 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -24,7 +24,7 @@ // ==/UserScript== /* -* 4chan X - Version 1.4.1 - 2014-03-13 +* 4chan X - Version 1.4.1 - 2014-03-14 * * Licensed under the MIT license. * https://github.com/Spittie/4chan-x/blob/master/LICENSE @@ -849,24 +849,27 @@ } }; - Callbacks.prototype.execute = function(node) { - var err, errors, name, _i, _len, _ref; - _ref = this.keys; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - try { - if (!this[name].disconnected) { - this[name].call(node); + Callbacks.prototype.execute = function(nodes) { + var cb, err, errors, i, j, name, node; + i = 0; + while (name = this.keys[i++]) { + j = 0; + cb = this[name]; + while (node = nodes[j++]) { + try { + if (!cb.disconnected) { + cb.call(node); + } + } catch (_error) { + err = _error; + if (!errors) { + errors = []; + } + errors.push({ + message: ['"', name, '" crashed on node ', this.type, ' No.', node.ID, ' (', node.board, ').'].join(''), + error: err + }); } - } catch (_error) { - err = _error; - if (!errors) { - errors = []; - } - errors.push({ - message: ['"', name, '" crashed on node ', this.type, ' No.', node.ID, ' (', node.board, ').'].join(''), - error: err - }); } } if (errors) { @@ -3319,8 +3322,8 @@ if (errors) { Main.handleErrors(errors); } - Main.callbackNodes(Thread, threads); - Main.callbackNodes(Post, posts); + Thread.callbacks.execute(threads); + Post.callbacks.execute(posts); Index.updateHideLabel(); return $.event('IndexRefresh'); }, @@ -3358,7 +3361,7 @@ if (errors) { Main.handleErrors(errors); } - return Main.callbackNodes(Post, posts); + return Post.callbacks.execute(posts); }, buildCatalogViews: function() { var catalogThreads, i, nodes, thread, _i, _len, _ref; @@ -3370,7 +3373,7 @@ catalogThreads.push(new CatalogThread(Build.catalogThread(thread), thread)); } } - Main.callbackNodes(CatalogThread, catalogThreads); + CatalogThread.callbacks.execute(catalogThreads); nodes = []; i = 0; while (thread = Index.sortedThreads[i++]) { @@ -3989,7 +3992,7 @@ return; } clone = post.addClone(context); - Main.callbackNodes(Clone, [clone]); + Clone.callbacks.execute([clone]); nodes = clone.nodes; $.rmAll(nodes.root); $.add(nodes.root, nodes.post); @@ -4046,7 +4049,7 @@ board = g.boards[boardID] || new Board(boardID); thread = g.threads["" + boardID + "." + threadID] || new Thread(threadID, board); post = new Post(Build.postFromObject(post, boardID), thread, board); - Main.callbackNodes(Post, [post]); + Post.callbacks.execute([post]); return Get.insert(post, root, context); }, archivedPost: function(req, boardID, postID, root, context) { @@ -4115,7 +4118,7 @@ if ((_ref1 = $('.page-num', post.nodes.info)) != null) { _ref1.hidden = true; } - Main.callbackNodes(Post, [post]); + Post.callbacks.execute([post]); return Get.insert(post, root, context); }, parseMarkup: function(text) { @@ -9878,7 +9881,7 @@ ThreadUpdater.audio.play(); } ThreadUpdater.lastPost = posts[count - 1].ID; - Main.callbackNodes(Post, posts); + Post.callbacks.execute(posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && Header.getBottomOf(ThreadUpdater.root) > -75; for (_j = 0, _len1 = posts.length; _j < _len1; _j++) { post = posts[_j]; @@ -11539,7 +11542,7 @@ posts.push(post); postsRoot.push(root); } - Main.callbackNodes(Post, posts); + Post.callbacks.execute(posts); $.after(a, postsRoot); postsCount = postsRoot.length; return a.textContent = ExpandThread.text('-', postsRoot.length, filesCount); @@ -12817,8 +12820,8 @@ makePost(post); $.add(threadRoot, post); } - Main.callbackNodes(Thread, [thread]); - Main.callbackNodes(Post, posts); + Thread.callbacks.execute([thread]); + Post.callbacks.execute(posts); if (Conf['Quote Threading'] && !Conf['Unread Count']) { QuoteThreading.force(); } @@ -13699,10 +13702,9 @@ if (errors) { Main.handleErrors(errors); } - Main.callbackNodes(Thread, threads); - Main.callbackNodesDB(Post, posts, function() { - return $.event('4chanXInitFinished'); - }); + Thread.callbacks.execute(threads); + Post.callbacks.execute(posts); + $.event('4chanXInitFinished'); } return $.get('previousversion', null, function(_arg) { var changelog, el, previousversion; @@ -13722,40 +13724,6 @@ return $.set('previousversion', g.VERSION); }); }, - callbackNodes: function(klass, nodes) { - var cb, i, node; - i = 0; - cb = klass.callbacks; - while (node = nodes[i++]) { - cb.execute(node); - } - }, - callbackNodesDB: function(klass, nodes, cb) { - var cbs, fn, i, softTask; - i = 0; - cbs = klass.callbacks; - fn = function() { - var node; - if (!(node = nodes[i])) { - return false; - } - cbs.execute(node); - return ++i % 25; - }; - softTask = function() { - while (fn()) { - continue; - } - if (!nodes[i]) { - if (cb) { - cb(); - } - return; - } - return setTimeout(softTask, 0); - }; - return softTask(); - }, addCallback: function(e) { var Klass, obj; obj = e.detail; diff --git a/builds/crx/script.js b/builds/crx/script.js index 336cee79b..b921ecd80 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript /* -* 4chan X - Version 1.4.1 - 2014-03-13 +* 4chan X - Version 1.4.1 - 2014-03-14 * * Licensed under the MIT license. * https://github.com/Spittie/4chan-x/blob/master/LICENSE @@ -903,24 +903,27 @@ } }; - Callbacks.prototype.execute = function(node) { - var err, errors, name, _i, _len, _ref; - _ref = this.keys; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - try { - if (!this[name].disconnected) { - this[name].call(node); + Callbacks.prototype.execute = function(nodes) { + var cb, err, errors, i, j, name, node; + i = 0; + while (name = this.keys[i++]) { + j = 0; + cb = this[name]; + while (node = nodes[j++]) { + try { + if (!cb.disconnected) { + cb.call(node); + } + } catch (_error) { + err = _error; + if (!errors) { + errors = []; + } + errors.push({ + message: ['"', name, '" crashed on node ', this.type, ' No.', node.ID, ' (', node.board, ').'].join(''), + error: err + }); } - } catch (_error) { - err = _error; - if (!errors) { - errors = []; - } - errors.push({ - message: ['"', name, '" crashed on node ', this.type, ' No.', node.ID, ' (', node.board, ').'].join(''), - error: err - }); } } if (errors) { @@ -3378,8 +3381,8 @@ if (errors) { Main.handleErrors(errors); } - Main.callbackNodes(Thread, threads); - Main.callbackNodes(Post, posts); + Thread.callbacks.execute(threads); + Post.callbacks.execute(posts); Index.updateHideLabel(); return $.event('IndexRefresh'); }, @@ -3417,7 +3420,7 @@ if (errors) { Main.handleErrors(errors); } - return Main.callbackNodes(Post, posts); + return Post.callbacks.execute(posts); }, buildCatalogViews: function() { var catalogThreads, i, nodes, thread, _i, _len, _ref; @@ -3429,7 +3432,7 @@ catalogThreads.push(new CatalogThread(Build.catalogThread(thread), thread)); } } - Main.callbackNodes(CatalogThread, catalogThreads); + CatalogThread.callbacks.execute(catalogThreads); nodes = []; i = 0; while (thread = Index.sortedThreads[i++]) { @@ -4048,7 +4051,7 @@ return; } clone = post.addClone(context); - Main.callbackNodes(Clone, [clone]); + Clone.callbacks.execute([clone]); nodes = clone.nodes; $.rmAll(nodes.root); $.add(nodes.root, nodes.post); @@ -4105,7 +4108,7 @@ board = g.boards[boardID] || new Board(boardID); thread = g.threads["" + boardID + "." + threadID] || new Thread(threadID, board); post = new Post(Build.postFromObject(post, boardID), thread, board); - Main.callbackNodes(Post, [post]); + Post.callbacks.execute([post]); return Get.insert(post, root, context); }, archivedPost: function(req, boardID, postID, root, context) { @@ -4174,7 +4177,7 @@ if ((_ref1 = $('.page-num', post.nodes.info)) != null) { _ref1.hidden = true; } - Main.callbackNodes(Post, [post]); + Post.callbacks.execute([post]); return Get.insert(post, root, context); }, parseMarkup: function(text) { @@ -9893,7 +9896,7 @@ ThreadUpdater.audio.play(); } ThreadUpdater.lastPost = posts[count - 1].ID; - Main.callbackNodes(Post, posts); + Post.callbacks.execute(posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && Header.getBottomOf(ThreadUpdater.root) > -75; for (_j = 0, _len1 = posts.length; _j < _len1; _j++) { post = posts[_j]; @@ -11553,7 +11556,7 @@ posts.push(post); postsRoot.push(root); } - Main.callbackNodes(Post, posts); + Post.callbacks.execute(posts); $.after(a, postsRoot); postsCount = postsRoot.length; return a.textContent = ExpandThread.text('-', postsRoot.length, filesCount); @@ -12831,8 +12834,8 @@ makePost(post); $.add(threadRoot, post); } - Main.callbackNodes(Thread, [thread]); - Main.callbackNodes(Post, posts); + Thread.callbacks.execute([thread]); + Post.callbacks.execute(posts); if (Conf['Quote Threading'] && !Conf['Unread Count']) { QuoteThreading.force(); } @@ -13696,10 +13699,9 @@ if (errors) { Main.handleErrors(errors); } - Main.callbackNodes(Thread, threads); - Main.callbackNodesDB(Post, posts, function() { - return $.event('4chanXInitFinished'); - }); + Thread.callbacks.execute(threads); + Post.callbacks.execute(posts); + $.event('4chanXInitFinished'); } return $.get('previousversion', null, function(_arg) { var changelog, el, previousversion; @@ -13719,40 +13721,6 @@ return $.set('previousversion', g.VERSION); }); }, - callbackNodes: function(klass, nodes) { - var cb, i, node; - i = 0; - cb = klass.callbacks; - while (node = nodes[i++]) { - cb.execute(node); - } - }, - callbackNodesDB: function(klass, nodes, cb) { - var cbs, fn, i, softTask; - i = 0; - cbs = klass.callbacks; - fn = function() { - var node; - if (!(node = nodes[i])) { - return false; - } - cbs.execute(node); - return ++i % 25; - }; - softTask = function() { - while (fn()) { - continue; - } - if (!nodes[i]) { - if (cb) { - cb(); - } - return; - } - return setTimeout(softTask, 0); - }; - return softTask(); - }, addCallback: function(e) { var Klass, obj; obj = e.detail; diff --git a/src/General/Get.coffee b/src/General/Get.coffee index f042fde45..4110fb8ba 100755 --- a/src/General/Get.coffee +++ b/src/General/Get.coffee @@ -81,7 +81,7 @@ Get = # Stop here if the container has been removed while loading. return unless root.parentNode clone = post.addClone context - Main.callbackNodes Clone, [clone] + Clone.callbacks.execute [clone] # Get rid of the side arrows/stubs. {nodes} = clone @@ -136,7 +136,7 @@ Get = thread = g.threads["#{boardID}.#{threadID}"] or new Thread threadID, board post = new Post Build.postFromObject(post, boardID), thread, board - Main.callbackNodes Post, [post] + Post.callbacks.execute [post] Get.insert post, root, context archivedPost: (req, boardID, postID, root, context) -> # In case of multiple callbacks for the same request, @@ -209,7 +209,7 @@ Get = new Thread threadID, board post = new Post Build.post(o, true), thread, board, {isArchived: true} $('.page-num', post.nodes.info)?.hidden = true - Main.callbackNodes Post, [post] + Post.callbacks.execute [post] Get.insert post, root, context parseMarkup: (text) -> { diff --git a/src/General/Index.coffee b/src/General/Index.coffee index 1e5493d38..2d33daf1f 100644 --- a/src/General/Index.coffee +++ b/src/General/Index.coffee @@ -622,8 +622,8 @@ Index = error: err Main.handleErrors errors if errors - Main.callbackNodes Thread, threads - Main.callbackNodes Post, posts + Thread.callbacks.execute threads + Post.callbacks.execute posts Index.updateHideLabel() $.event 'IndexRefresh' @@ -649,13 +649,13 @@ Index = $.add thread.OP.nodes.root.parentNode, nodes Main.handleErrors errors if errors - Main.callbackNodes Post, posts + Post.callbacks.execute posts buildCatalogViews: -> catalogThreads = [] for thread in Index.sortedThreads when !thread.catalogView catalogThreads.push new CatalogThread Build.catalogThread(thread), thread - Main.callbackNodes CatalogThread, catalogThreads + CatalogThread.callbacks.execute catalogThreads nodes = [] i = 0 while thread = Index.sortedThreads[i++] diff --git a/src/General/Main.coffee b/src/General/Main.coffee index 52f87ddfd..2910386be 100755 --- a/src/General/Main.coffee +++ b/src/General/Main.coffee @@ -230,9 +230,10 @@ Main = error: err Main.handleErrors errors if errors - Main.callbackNodes Thread, threads - Main.callbackNodesDB Post, posts, -> - $.event '4chanXInitFinished' + Thread.callbacks.execute threads + Post.callbacks.execute posts + + $.event '4chanXInitFinished' $.get 'previousversion', null, ({previousversion}) -> return if previousversion is g.VERSION @@ -245,31 +246,6 @@ Main = Settings.open() $.set 'previousversion', g.VERSION - callbackNodes: (klass, nodes) -> - i = 0 - cb = klass.callbacks - while node = nodes[i++] - cb.execute node - return - - callbackNodesDB: (klass, nodes, cb) -> - i = 0 - cbs = klass.callbacks - fn = -> - return false unless node = nodes[i] - cbs.execute node - ++i % 25 - - softTask = -> - while fn() - continue - unless nodes[i] - cb() if cb - return - setTimeout softTask, 0 - - softTask() - addCallback: (e) -> obj = e.detail unless typeof obj.callback.name is 'string' diff --git a/src/General/Navigate.coffee b/src/General/Navigate.coffee index 646585770..7e8e536cf 100644 --- a/src/General/Navigate.coffee +++ b/src/General/Navigate.coffee @@ -312,8 +312,8 @@ Navigate = makePost post $.add threadRoot, post - Main.callbackNodes Thread, [thread] - Main.callbackNodes Post, posts + Thread.callbacks.execute [thread] + Post.callbacks.execute posts QuoteThreading.force() if Conf['Quote Threading'] and not Conf['Unread Count'] diff --git a/src/General/lib/callbacks.class b/src/General/lib/callbacks.class index eee6206a3..7a5225c87 100644 --- a/src/General/lib/callbacks.class +++ b/src/General/lib/callbacks.class @@ -10,14 +10,22 @@ class Callbacks connect: (name) -> delete @[name].disconnected if @[name].disconnected disconnect: (name) -> @[name].disconnected = true if @[name] - execute: (node) -> - for name in @keys - try - @[name].call node unless @[name].disconnected - catch err - errors = [] unless errors - errors.push - message: ['"', name, '" crashed on node ', @type, ' No.', node.ID, ' (', node.board, ').'].join('') - error: err + execute: (nodes) -> + i = 0 + # c.time 'Features' + while name = @keys[i++] + j = 0 + cb = @[name] + # c.time name + while node = nodes[j++] + try + cb.call node unless cb.disconnected + catch err + errors = [] unless errors + errors.push + message: ['"', name, '" crashed on node ', @type, ' No.', node.ID, ' (', node.board, ').'].join('') + error: err + # c.timeEnd name + # c.timeEnd 'Features' Main.handleErrors errors if errors diff --git a/src/Miscellaneous/ExpandThread.coffee b/src/Miscellaneous/ExpandThread.coffee index c01e9e7bb..77c5fdc6d 100755 --- a/src/Miscellaneous/ExpandThread.coffee +++ b/src/Miscellaneous/ExpandThread.coffee @@ -100,7 +100,7 @@ ExpandThread = filesCount++ if 'file' of post posts.push post postsRoot.push root - Main.callbackNodes Post, posts + Post.callbacks.execute posts $.after a, postsRoot postsCount = postsRoot.length diff --git a/src/Monitoring/ThreadUpdater.coffee b/src/Monitoring/ThreadUpdater.coffee index bb6f52a37..d35d187cb 100755 --- a/src/Monitoring/ThreadUpdater.coffee +++ b/src/Monitoring/ThreadUpdater.coffee @@ -332,7 +332,7 @@ ThreadUpdater = ThreadUpdater.audio.play() ThreadUpdater.lastPost = posts[count - 1].ID - Main.callbackNodes Post, posts + Post.callbacks.execute posts scroll = Conf['Auto Scroll'] and ThreadUpdater.scrollBG() and Header.getBottomOf(ThreadUpdater.root) > -75