utils/root.js
function evaluate(conf, parent) {
  if (!conf || conf.constructor.name !== 'Object') return conf;
  var val;
  for (var key in conf) {
    val = conf[key];
    if (typeof val === 'function') val = reduceVal(parent, val);
    conf[key] = evaluate(val, parent);
  }
  return conf;
}
function evaluate(conf, parent) {
  if (!conf || conf.constructor.name !== 'Object') return conf;
  var val;
  for (var key in conf) {
    val = conf[key];
    if (typeof val === 'function') val = reduceVal(parent, val);
    conf[key] = evaluate(val, parent);
  }
  return conf;
}
function evaluate ( conf , parent ) { if ( ! conf || conf . constructor . name !== 'Object' ) return conf ; var val ; for ( var key in conf ) { val = conf [ key ] ; if ( typeof val === 'function' ) val = reduceVal ( parent , val ) ; conf [ key ] = evaluate ( val , parent ) ; } return conf ; }
Recursively evaluate lazy values
@param {Object} conf
@param {Object} parent
Recursively evaluate lazy values