mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-24 06:35:45 +01:00
Recognize new-style iterators in util.objectToString.
This commit is contained in:
@@ -27,7 +27,8 @@ var Tabs = Module("tabs", {
|
|||||||
config.tabStrip.collapsed = true;
|
config.tabStrip.collapsed = true;
|
||||||
|
|
||||||
this.tabStyle = styles.system.add("tab-strip-hiding", config.styleableChrome,
|
this.tabStyle = styles.system.add("tab-strip-hiding", config.styleableChrome,
|
||||||
(config.tabStrip.id ? "#" + config.tabStrip.id : ".tabbrowser-strip") +
|
(config.tabStrip.id ? "#" + config.tabStrip.id
|
||||||
|
: ".tabbrowser-strip") +
|
||||||
"{ visibility: collapse; }",
|
"{ visibility: collapse; }",
|
||||||
false, true);
|
false, true);
|
||||||
|
|
||||||
|
|||||||
@@ -1426,7 +1426,7 @@ function octal(decimal) parseInt(decimal, 8);
|
|||||||
* @param {nsIJSIID} iface The interface to which to query all elements.
|
* @param {nsIJSIID} iface The interface to which to query all elements.
|
||||||
* @returns {Generator}
|
* @returns {Generator}
|
||||||
*/
|
*/
|
||||||
let _iterator = "@@iterator" in [] ? "@@iterator" : "iterator";
|
iter.iteratorProp = "@@iterator" in [] ? "@@iterator" : "iterator";
|
||||||
function iter(obj, iface) {
|
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));
|
||||||
@@ -1444,7 +1444,7 @@ function iter(obj, iface) {
|
|||||||
;
|
;
|
||||||
else if (isinstance(obj, [Ci.nsIDOMHTMLCollection, Ci.nsIDOMNodeList]))
|
else if (isinstance(obj, [Ci.nsIDOMHTMLCollection, Ci.nsIDOMNodeList]))
|
||||||
res = array.iterItems(obj);
|
res = array.iterItems(obj);
|
||||||
else if (_iterator in obj && callable(obj[_iterator]) && !("__iterator__" in obj))
|
else if (iter.iteratorProp in obj && callable(obj[iter.iteratorProp]) && !("__iterator__" in obj))
|
||||||
res = (x for (x of obj));
|
res = (x for (x of obj));
|
||||||
else if (ctypes && ctypes.CData && obj instanceof ctypes.CData) {
|
else if (ctypes && ctypes.CData && obj instanceof ctypes.CData) {
|
||||||
while (obj.constructor instanceof ctypes.PointerType)
|
while (obj.constructor instanceof ctypes.PointerType)
|
||||||
|
|||||||
@@ -1033,12 +1033,18 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
|||||||
// window.content often does not want to be queried with "var i in object"
|
// window.content often does not want to be queried with "var i in object"
|
||||||
try {
|
try {
|
||||||
let hasValue = !("__iterator__" in object || isinstance(object, ["Generator", "Iterator"]));
|
let hasValue = !("__iterator__" in object || isinstance(object, ["Generator", "Iterator"]));
|
||||||
|
|
||||||
if (object.dactyl && object.modules && object.modules.modules == object.modules) {
|
if (object.dactyl && object.modules && object.modules.modules == object.modules) {
|
||||||
object = Iterator(object);
|
object = Iterator(object);
|
||||||
hasValue = false;
|
hasValue = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let keyIter = object;
|
let keyIter = object;
|
||||||
if ("__iterator__" in object && !callable(object.__iterator__))
|
if (iter.iteratorProp in object) {
|
||||||
|
keyIter = (k for (k of object));
|
||||||
|
hasValue = false;
|
||||||
|
}
|
||||||
|
else if ("__iterator__" in object && !callable(object.__iterator__))
|
||||||
keyIter = keys(object);
|
keyIter = keys(object);
|
||||||
|
|
||||||
for (let i in keyIter) {
|
for (let i in keyIter) {
|
||||||
@@ -1047,6 +1053,7 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
|||||||
value = object[i];
|
value = object[i];
|
||||||
}
|
}
|
||||||
catch (e) {}
|
catch (e) {}
|
||||||
|
|
||||||
if (!hasValue) {
|
if (!hasValue) {
|
||||||
if (isArray(i) && i.length == 2)
|
if (isArray(i) && i.length == 2)
|
||||||
[i, value] = i;
|
[i, value] = i;
|
||||||
|
|||||||
Reference in New Issue
Block a user