function formatObject(formatter, value, encode) {
  var output = Object.assign({}, value); // eslint-disable-line
  var formatObject = null; // eslint-disable-line

  // if the object is a string flag, then retreive the object
  if (typeof formatter === 'string') {
    if (formatter === 'Boolean|EthSyncing') {
      formatObject = Object.assign({}, schema.objects.EthSyncing);
    } else if (formatter === 'DATA|Transaction') {
      formatObject = Object.assign({}, schema.objects.Transaction);
    } else {
      formatObject = Object.assign({}, schema.objects[formatter]);
    }
  }

  // check if all required data keys are fulfilled
  if (!arrayContainsArray(Object.keys(value), formatObject.__required)) { // eslint-disable-line
    throw new Error(`[ethjs-format] object ${JSON.stringify(value)} must contain properties: ${formatObject.__required.join(', ')}`); // eslint-disable-line
  }

  // assume formatObject is an object, go through keys and format each
  Object.keys(formatObject).forEach((valueKey) => {
    if (valueKey !== '__required' && typeof value[valueKey] !== 'undefined') {
      output[valueKey] = format(formatObject[valueKey], value[valueKey], encode);
    }
  });

  return output;
}
function formatObject(formatter, value, encode) {
  var output = Object.assign({}, value); // eslint-disable-line
  var formatObject = null; // eslint-disable-line

  // if the object is a string flag, then retreive the object
  if (typeof formatter === 'string') {
    if (formatter === 'Boolean|EthSyncing') {
      formatObject = Object.assign({}, schema.objects.EthSyncing);
    } else if (formatter === 'DATA|Transaction') {
      formatObject = Object.assign({}, schema.objects.Transaction);
    } else {
      formatObject = Object.assign({}, schema.objects[formatter]);
    }
  }

  // check if all required data keys are fulfilled
  if (!arrayContainsArray(Object.keys(value), formatObject.__required)) { // eslint-disable-line
    throw new Error(`[ethjs-format] object ${JSON.stringify(value)} must contain properties: ${formatObject.__required.join(', ')}`); // eslint-disable-line
  }

  // assume formatObject is an object, go through keys and format each
  Object.keys(formatObject).forEach((valueKey) => {
    if (valueKey !== '__required' && typeof value[valueKey] !== 'undefined') {
      output[valueKey] = format(formatObject[valueKey], value[valueKey], encode);
    }
  });

  return output;
}
function formatObject ( formatter , value , encode ) { var output = Object . assign ( { } , value ) ; // eslint-disable-line var formatObject = null ; // eslint-disable-line // if the object is a string flag, then retreive the object if ( typeof formatter === 'string' ) { if ( formatter === 'Boolean|EthSyncing' ) { formatObject = Object . assign ( { } , schema . objects . EthSyncing ) ; } else if ( formatter === 'DATA|Transaction' ) { formatObject = Object . assign ( { } , schema . objects . Transaction ) ; } else { formatObject = Object . assign ( { } , schema . objects [ formatter ] ) ; } } // check if all required data keys are fulfilled if ( ! arrayContainsArray ( Object . keys ( value ) , formatObject . __required ) ) { // eslint-disable-line throw new Error ( ` ${ JSON . stringify ( value ) } ${ formatObject . __required . join ( ', ' ) } ` ) ; // eslint-disable-line } // assume formatObject is an object, go through keys and format each Object . keys ( formatObject ) . forEach ( ( valueKey ) => { if ( valueKey !== '__required' && typeof value [ valueKey ] !== 'undefined' ) { output [ valueKey ] = format ( formatObject [ valueKey ] , value [ valueKey ] , encode ) ; } } ) ; return output ; }
Format object, even with random RPC caviets

@method formatObject
@param {String|Array} formatter the unit to convert to, default ether
@param {Object} value the object value
@param {Boolean} encode encode to hex or decode to BigNumber
@returns {Object} output object
@throws error if value is a float
Format object even with random RPC caviets