Skip to content

Instantly share code, notes, and snippets.

@amb26
Created April 14, 2015 15:08
Show Gist options
  • Select an option

  • Save amb26/70bf232bb06f93b0bbe0 to your computer and use it in GitHub Desktop.

Select an option

Save amb26/70bf232bb06f93b0bbe0 to your computer and use it in GitHub Desktop.
fluid.preExpandRecurse = function (root, source, holder, member) { // on entry, holder[member] = source
function pushExpander(expander) {
root.expanders.push({expander: expander, holder: holder, member: member});
delete holder[member];
};
if (fluid.isIoCReference(source)) {
var parsed = fluid.parseContextReference(source);
var segs = fluid.model.parseEL(parsed.path);
pushExpander({
func: fluid.expander.fetch,
context: parsed.context,
segs: segs
});
} else if (fluid.isPlainObject(source)) {
if (source.expander) {
source.expander.func = fluid.getGlobalValue(source.expander.type || "fluid.invokeFunc")
pushExpander(source.expander);
} else {
fluid.each(source, function (value, key) {
fluid.preExpandRecurse(root, value, source, key);
});
}
}
};
// High performance expander for situations such as invokers, listeners, where raw materials can be cached - consumes "root" structure produced by preExpand
fluid.expandImmediateImpl = function (root, options) {
var expanders = root.expanders;
for (var i = 0; i < expanders.length; ++ i) {
var expander = expanders[i];
expander.holder[expander.member] = expander.expander.func(null, expander, options);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment