Diffstat (limited to 'frontend/gamma/js/MochiKit/Iter.js') (more/less context) (show whitespace changes)
-rw-r--r-- | frontend/gamma/js/MochiKit/Iter.js | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/frontend/gamma/js/MochiKit/Iter.js b/frontend/gamma/js/MochiKit/Iter.js index 524b2bc..77623bc 100644 --- a/frontend/gamma/js/MochiKit/Iter.js +++ b/frontend/gamma/js/MochiKit/Iter.js @@ -1,27 +1,27 @@ /*** MochiKit.Iter 1.5 See <http://mochikit.com/> for documentation, downloads, license, etc. (c) 2005 Bob Ippolito. All rights Reserved. ***/ -MochiKit.Base._module('Iter', '1.5', ['Base']); +MochiKit.Base.module(MochiKit, 'Iter', '1.5', ['Base']); MochiKit.Base.update(MochiKit.Iter, { /** @id MochiKit.Iter.registerIteratorFactory */ registerIteratorFactory: function (name, check, iterfactory, /* optional */ override) { MochiKit.Iter.iteratorRegistry.register(name, check, iterfactory, override); }, /** @id MochiKit.Iter.isIterable */ isIterable: function(o) { return o != null && (typeof(o.next) == "function" || typeof(o.iter) == "function"); }, /** @id MochiKit.Iter.iter */ iter: function (iterable, /* optional */ sentinel) { var self = MochiKit.Iter; @@ -209,40 +209,41 @@ MochiKit.Base.update(MochiKit.Iter, { if (arguments.length == 2) { stop = arguments[1]; } else if (arguments.length == 3) { start = arguments[1]; stop = arguments[2]; } else { start = arguments[1]; stop = arguments[2]; step = arguments[3]; } return { repr: function () { return "islice(" + ["...", start, stop, step].join(", ") + ")"; }, toString: m.forwardCall("repr"), next: function () { + if (start >= stop) { + throw self.StopIteration; + } + var rval; while (i < start) { rval = seq.next(); i++; } - if (start >= stop) { - throw self.StopIteration; - } start += step; return rval; } }; }, /** @id MochiKit.Iter.imap */ imap: function (fun, p, q/*, ...*/) { var m = MochiKit.Base; var self = MochiKit.Iter; var iterables = m.map(self.iter, m.extend(null, arguments, 1)); var map = m.map; var next = self.next; return { repr: function () { return "imap(...)"; }, toString: m.forwardCall("repr"), @@ -267,41 +268,38 @@ MochiKit.Base.update(MochiKit.Iter, { /** @id MochiKit.Iter.chain */ chain: function (p, q/*, ...*/) { // dumb fast path var self = MochiKit.Iter; var m = MochiKit.Base; if (arguments.length == 1) { return self.iter(arguments[0]); } var argiter = m.map(self.iter, arguments); return { repr: function () { return "chain(...)"; }, toString: m.forwardCall("repr"), next: function () { while (argiter.length > 1) { try { - var result = argiter[0].next(); - return result; + return argiter[0].next(); } catch (e) { if (e != self.StopIteration) { throw e; } argiter.shift(); - var result = argiter[0].next(); - return result; } } if (argiter.length == 1) { // optimize last element var arg = argiter.shift(); this.next = m.bind("next", arg); return this.next(); } throw self.StopIteration; } }; }, /** @id MochiKit.Iter.takewhile */ takewhile: function (pred, seq) { var self = MochiKit.Iter; @@ -400,33 +398,33 @@ MochiKit.Base.update(MochiKit.Iter, { if (iterable instanceof Array) { return iterable.slice(); } // this is necessary to avoid a Safari crash if (typeof(iterable) == "function" && !(iterable instanceof Function) && typeof(iterable.length) == 'number') { rval = []; for (var i = 0; i < iterable.length; i++) { rval.push(iterable[i]); } return rval; } var self = MochiKit.Iter; iterable = self.iter(iterable); - var rval = []; + rval = []; var a_val; try { while (true) { a_val = iterable.next(); rval.push(a_val); } } catch (e) { if (e != self.StopIteration) { throw e; } return rval; } // mozilla warnings aren't too bright return undefined; }, |