lib/collection/variable-list.js
function (obj, overrides, mutate) {
        var resolutionQueue = [], // we use this to store the queue of variable hierarchy

            // this is an intermediate object to stimulate a property (makes the do-while loop easier)
            variableSource = {
                variables: this,
                __parent: this.__parent
            };

        do { // iterate and accumulate as long as you find `.variables` in parent tree
            variableSource.variables && resolutionQueue.push(variableSource.variables);
            variableSource = variableSource.__parent;
        } while (variableSource);

        variableSource = null; // cautious cleanup

        return Property.replaceSubstitutionsIn(obj, _.union(resolutionQueue, overrides), mutate);
    }
function (obj, overrides, mutate) {
        var resolutionQueue = [], // we use this to store the queue of variable hierarchy

            // this is an intermediate object to stimulate a property (makes the do-while loop easier)
            variableSource = {
                variables: this,
                __parent: this.__parent
            };

        do { // iterate and accumulate as long as you find `.variables` in parent tree
            variableSource.variables && resolutionQueue.push(variableSource.variables);
            variableSource = variableSource.__parent;
        } while (variableSource);

        variableSource = null; // cautious cleanup

        return Property.replaceSubstitutionsIn(obj, _.union(resolutionQueue, overrides), mutate);
    }
function ( obj , overrides , mutate ) { var resolutionQueue = [ ] , // we use this to store the queue of variable hierarchy // this is an intermediate object to stimulate a property (makes the do-while loop easier) variableSource = { variables : this , __parent : this . __parent } ; do { // iterate and accumulate as long as you find `.variables` in parent tree variableSource . variables && resolutionQueue . push ( variableSource . variables ) ; variableSource = variableSource . __parent ; } while ( variableSource ) ; variableSource = null ; // cautious cleanup return Property . replaceSubstitutionsIn ( obj , _ . union ( resolutionQueue , overrides ) , mutate ) ; }
Recursively replace strings in an object with instances of variables. Note that it clones the original object. If
the `mutate` param is set to true, then it replaces the same object instead of creating a new one.

@param {Array|Object} obj
@param {?Array<Object>=} [overrides] - additional objects to lookup for variable values
@param {Boolean=} [mutate=false]
@returns {Array|Object}
Recursively replace strings in an object with instances of variables . Note that it clones the original object . If the mutate param is set to true then it replaces the same object instead of creating a new one .