examples/weather/angular.js
function setter(obj, path, setValue, fullExp) {
  var element = path.split('.'), key;
  for (var i = 0; element.length > 1; i++) {
    key = ensureSafeMemberName(element.shift(), fullExp);
    var propertyObj = obj[key];
    if (!propertyObj) {
      propertyObj = {};
      obj[key] = propertyObj;
    }
    obj = propertyObj;
    if (obj.then) {
      if (!("$$v" in obj)) {
        (function(promise) {
          promise.then(function(val) { promise.$$v = val; }); }
        )(obj);
      }
      if (obj.$$v === undefined) {
        obj.$$v = {};
      }
      obj = obj.$$v;
    }
  }
  key = ensureSafeMemberName(element.shift(), fullExp);
  obj[key] = setValue;
  return setValue;
}
function setter(obj, path, setValue, fullExp) {
  var element = path.split('.'), key;
  for (var i = 0; element.length > 1; i++) {
    key = ensureSafeMemberName(element.shift(), fullExp);
    var propertyObj = obj[key];
    if (!propertyObj) {
      propertyObj = {};
      obj[key] = propertyObj;
    }
    obj = propertyObj;
    if (obj.then) {
      if (!("$$v" in obj)) {
        (function(promise) {
          promise.then(function(val) { promise.$$v = val; }); }
        )(obj);
      }
      if (obj.$$v === undefined) {
        obj.$$v = {};
      }
      obj = obj.$$v;
    }
  }
  key = ensureSafeMemberName(element.shift(), fullExp);
  obj[key] = setValue;
  return setValue;
}
function setter ( obj , path , setValue , fullExp ) { var element = path . split ( '.' ) , key ; for ( var i = 0 ; element . length > 1 ; i ++ ) { key = ensureSafeMemberName ( element . shift ( ) , fullExp ) ; var propertyObj = obj [ key ] ; if ( ! propertyObj ) { propertyObj = { } ; obj [ key ] = propertyObj ; } obj = propertyObj ; if ( obj . then ) { if ( ! ( "$$v" in obj ) ) { ( function ( promise ) { promise . then ( function ( val ) { promise . $$v = val ; } ) ; } ) ( obj ) ; } if ( obj . $$v === undefined ) { obj . $$v = { } ; } obj = obj . $$v ; } } key = ensureSafeMemberName ( element . shift ( ) , fullExp ) ; obj [ key ] = setValue ; return setValue ; }
//////////////////////////////////////////////// Parser helper functions ////////////////////////////////////////////////
//////////////////////////////////////////////// Parser helper functions ////////////////////////////////////////////////