1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-16 18:23:31 +01:00

Fix iteration over whacky Map Iterators.

This commit is contained in:
Kris Maglione
2014-02-17 20:04:45 -08:00
parent 512b01d574
commit 1963b49ab0
2 changed files with 13 additions and 5 deletions

View File

@@ -1634,7 +1634,7 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), {
if (args["+purgecaches"]) if (args["+purgecaches"])
cache.flush(); cache.flush();
util.delay(function () { util.rehash(args) }); util.delay(() => { util.rehash(args) });
}, },
{ {
argCount: "0", // FIXME argCount: "0", // FIXME

View File

@@ -1409,10 +1409,6 @@ function iter(obj, iface) {
if (arguments.length == 2 && iface instanceof Ci.nsIJSIID) if (arguments.length == 2 && iface instanceof Ci.nsIJSIID)
return iter(obj).map(item => item.QueryInterface(iface)); return iter(obj).map(item => item.QueryInterface(iface));
if (isinstance(obj, ["Map Iterator"]))
// This is stupid.
obj = { __iterator__: (function () this).bind(obj) };
let args = arguments; let args = arguments;
let res = Iterator(obj); let res = Iterator(obj);
@@ -1424,6 +1420,17 @@ function iter(obj, iface) {
})(); })();
else if (isinstance(obj, ["Iterator", "Generator"])) else if (isinstance(obj, ["Iterator", "Generator"]))
; ;
else if (isinstance(obj, ["Map Iterator"]))
// This is stupid.
res = (function () {
for (;;) {
let { value, done } = obj.next();
if (done)
return;
yield value;
}
})();
else if (isinstance(obj, ["Map"])) else if (isinstance(obj, ["Map"]))
// This is stupid. // This is stupid.
res = (r for (r of obj)); res = (r for (r of obj));
@@ -1603,6 +1610,7 @@ const Iter = Class("Iter", {
__iterator__: function () this.iter __iterator__: function () this.iter
}); });
iter.Iter = Iter;
/** /**
* Array utility methods. * Array utility methods.