popuplateFieldsTest

by Tiago

JavaScript

function populateFieldsAntigo(data, newData, override) {
  var propName;

  function shouldWrite(data, propName, override) {
    return override === true || data[propName] === undefined || data[propName] === 'null';
  }

  override = override ? override : true;


  for (propName in newData) {
    if (newData[propName] !== null) {
      if (typeof newData[propName] === 'object' && Object.getOwnPropertyNames(newData[propName]).length > 0) {
        if (data[propName] === undefined || override) {
          data[propName] = newData[propName].constructor === Array ? [] : {};
          if (data.clearFields) {
            data.clearFields.push(propName);
          }
        }
        this.populateFields(data[propName], newData[propName], override);
      } else if (shouldWrite(data, propName, override)) {
        data[propName] = newData[propName];
        if (data.clearFields) {
          data.clearFields.push(propName);
        }
      }
    } else if (shouldWrite(data, propName, override)) {
      data[propName] = newData[propName];
      if (data.clearFields) {
        data.clearFields.push(propName);
      }
    }
  }

  return data;
}

function populateFields(data, newData, override) {
  var propName;

  function shouldWrite(data, propName, override) {
    return override === true || data[propName] === undefined || data[propName] === 'null';
  }

  function populateProperty(data, newData, propName) {
    data[propName] = newData[propName];
    if (data.clearFields) {
      data.clearFields.push(propName);
    }
  }

  function populateArray(localArray, remoteArray) {
    var i = 0;
    if (localArray == null) {
      localArray = [];
    }
    for (; i < remoteArray.length; i++) {
      localArray[i] = remoteArray[i];
    }
    localArray.splice(i, localArray.length - i);
  }

  override = override ? override : true;

  for (propName in newData) {
    if (newData[propName] != null) {
      if (typeof newData[propName] === 'object' &&...