Skip to content

Instantly share code, notes, and snippets.

@mattpodwysocki
Created February 20, 2012 23:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattpodwysocki/1872327 to your computer and use it in GitHub Desktop.
Save mattpodwysocki/1872327 to your computer and use it in GitHub Desktop.
enumerableProto.expand = function(selector) {
var parent = this;
return enumerableCreate(function () {
var current, q = [parent], innerEnumerator;
return enumeratorCreate(
function () {
while (true) {
if (!innerEnumerator) {
if (q.length === 0) {
return false;
}
innerEnumerator = q.shift().getEnumerator();
}
if (innerEnumerator.moveNext()) {
current = innerEnumerator.getCurrent();
q.push(selector(current));
return true;
} else {
innerEnumerator.dispose();
innerEnumerator = undefined;
}
}
},
function () { return current; },
function () {
if (innerEnumerator) {
innerEnumerator.dispose();
}
}
);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment