function format(formatter, value, encode, lengthRequirement) {
  var output = value; // eslint-disable-line

  // if formatter is quantity or quantity or tag
  if (formatter === 'Q') {
    output = formatQuantity(value, encode);
  } else if (formatter === 'QP') {
    output = formatQuantity(value, encode, true);
  } else if (formatter === 'Q|T') {
    output = formatQuantityOrTag(value, encode);
  } else if (formatter === 'D') {
    output = formatData(value); // dont format data flagged objects like compiler output
  } else if (formatter === 'D20') {
    output = formatData(value, 20); // dont format data flagged objects like compiler output
  } else if (formatter === 'D32') {
    output = formatData(value, 32); // dont format data flagged objects like compiler output
  } else {
    // if value is an object or array
    if (typeof value === 'object'
      && value !== null
      && Array.isArray(value) === false) {
      output = formatObject(formatter, value, encode);
    } else if (Array.isArray(value)) {
      output = formatArray(formatter, value, encode, lengthRequirement);
    }
  }

  return output;
}
function format(formatter, value, encode, lengthRequirement) {
  var output = value; // eslint-disable-line

  // if formatter is quantity or quantity or tag
  if (formatter === 'Q') {
    output = formatQuantity(value, encode);
  } else if (formatter === 'QP') {
    output = formatQuantity(value, encode, true);
  } else if (formatter === 'Q|T') {
    output = formatQuantityOrTag(value, encode);
  } else if (formatter === 'D') {
    output = formatData(value); // dont format data flagged objects like compiler output
  } else if (formatter === 'D20') {
    output = formatData(value, 20); // dont format data flagged objects like compiler output
  } else if (formatter === 'D32') {
    output = formatData(value, 32); // dont format data flagged objects like compiler output
  } else {
    // if value is an object or array
    if (typeof value === 'object'
      && value !== null
      && Array.isArray(value) === false) {
      output = formatObject(formatter, value, encode);
    } else if (Array.isArray(value)) {
      output = formatArray(formatter, value, encode, lengthRequirement);
    }
  }

  return output;
}
function format ( formatter , value , encode , lengthRequirement ) { var output = value ; // eslint-disable-line // if formatter is quantity or quantity or tag if ( formatter === 'Q' ) { output = formatQuantity ( value , encode ) ; } else if ( formatter === 'QP' ) { output = formatQuantity ( value , encode , true ) ; } else if ( formatter === 'Q|T' ) { output = formatQuantityOrTag ( value , encode ) ; } else if ( formatter === 'D' ) { output = formatData ( value ) ; // dont format data flagged objects like compiler output } else if ( formatter === 'D20' ) { output = formatData ( value , 20 ) ; // dont format data flagged objects like compiler output } else if ( formatter === 'D32' ) { output = formatData ( value , 32 ) ; // dont format data flagged objects like compiler output } else { // if value is an object or array if ( typeof value === 'object' && value !== null && Array . isArray ( value ) === false ) { output = formatObject ( formatter , value , encode ) ; } else if ( Array . isArray ( value ) ) { output = formatArray ( formatter , value , encode , lengthRequirement ) ; } } return output ; }
Format various kinds of data to RPC spec or into digestable JS objects

@method format
@param {String|Array} formatter the data formatter
@param {String|Array|Object|Null|Number} value the data value input
@param {Boolean} encode encode to hex or decode to BigNumbers, Strings, Booleans, Null
@param {Number} lengthRequirement the minimum data length requirement
@throws error if minimum length isnt met
Format various kinds of data to RPC spec or into digestable JS objects