From 93a560885b8d2529a67f740316ec76efd0a8c41a Mon Sep 17 00:00:00 2001 From: Garen Torikian Date: Thu, 10 May 2012 15:25:31 -0700 Subject: [PATCH] Generalize chunking --- lib/ace/edit_session/folding.js | 10 ++-------- lib/ace/lib/lang.js | 15 +++++++++++++++ lib/ace/worker/worker.js | 9 ++------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/ace/edit_session/folding.js b/lib/ace/edit_session/folding.js index 46f9583c..1789ef1e 100644 --- a/lib/ace/edit_session/folding.js +++ b/lib/ace/edit_session/folding.js @@ -43,7 +43,7 @@ var Range = require("../range").Range; var FoldLine = require("./fold_line").FoldLine; var Fold = require("./fold").Fold; var TokenIterator = require("../token_iterator").TokenIterator; - +var lang = require("../lib/lang"); function Folding() { /* * Looks up a fold at a given row/column. Possible values for side: @@ -749,13 +749,7 @@ function Folding() { var args = Array(len + 1); args.unshift(firstRow, 1); - var step = 100000; - var l = Math.ceil(args.length / step); - for (var targs, i = 0; i < l; i++) { - targs = args.slice(i * step, step); - this.foldWidgets.splice.apply(this.foldWidgets, targs); - } - + this.foldWidgets = lang.chunkLines(args, this.foldWidgets); } }; diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index c8b7afa3..bc118b2c 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -147,4 +147,19 @@ exports.deferredCall = function(fcn) { return deferred; }; + +exports.chunkLines = function(args, thingToSplice, thingtoApply) { + if (thingtoApply === undefined) + thingtoApply = thingToSplice; + + var step = 100000; + var l = Math.ceil(args.length / step); + for (var targs, i = 0; i < l; i++) { + targs = args.slice(i * step, step); + thingToSplice.slice.apply(thingtoApply, targs); + } + + return thingToSplice; +}; + }); diff --git a/lib/ace/worker/worker.js b/lib/ace/worker/worker.js index 04832b6a..ed2f771d 100644 --- a/lib/ace/worker/worker.js +++ b/lib/ace/worker/worker.js @@ -1,5 +1,5 @@ "no use strict"; - +var lang = require("../lib/lang"); var console = { log: function(msg) { postMessage({type: "log", data: msg}); @@ -123,12 +123,7 @@ var sender; onmessage = function(e) { var msg = e.data; if (msg.command) { - var step = 100000; - var l = Math.ceil(msg.args.length / step); - for (var targs, i = 0; i < l; i++) { - targs = msg.args.slice(i * step, step); - main[msg.command].apply(main, targs); - } + main[msg.command] = lang.chunkLines(msg.args, main[msg.command], main); } else if (msg.init) { initBaseUrls(msg.tlns);