text: var _ = require('../util').lodash,
      Property = require('./property').Property,
      PropertyBase = require('./property-base').PropertyBase,
  
      FormParam;
  
  /**
   * @typedef FormParam.definition
   * @property {String} key The name ("key") of the form data parameter.
   * @property {String} value The value of the parameter.
   */
  _.inherit((
  
      /**
       * Represents a Form Data parameter, which can exist in request body.
       *
       * @constructor
       * @param {FormParam.definition} options Pass the initial definition of the form data parameter.
       */
      FormParam = function PostmanFormParam (options = {}) {
          FormParam.super_.apply(this, arguments);
  
          this.key = options.key || '';
          this.value = options.value || '';
          this.type = options.type;
          this.src = options.src;
          this.contentType = options.contentType;
      }), Property);
  
  _.assign(FormParam.prototype, /** @lends FormParam.prototype */ {
      /**
       * Converts the FormParameter to a single param string.
       *
       * @returns {String}
       */
      toString () {
          return this.key + '=' + this.value;
      },
  
      /**
       * Returns the value of the form parameter (if any).
       *
       * @returns {*|String}
       */
      valueOf () {
          return this.value; // can be multiple types, so just return whatever we have instead of being too clever
      },
  
      /**
       * Convert the form-param to JSON compatible plain object.
       *
       * @returns {Object}
       */
      toJSON () {
          var obj = PropertyBase.toJSON(this);
  
          // remove value from file param because it is non-serializable ReadStream
          if (obj.type === 'file') {
              _.unset(obj, 'value');
          }
  
          return obj;
      }
  });
  
  _.assign(FormParam, /** @lends FormParam */ {
  
      /**
       * Defines the name of this property for internal use.
       *
       * @private
       * @readOnly
       * @type {String}
       */
      _postman_propertyName: 'FormParam',
  
      /**
       * Declare the list index key, so that property lists of form parameters work correctly
       *
       * @type {String}
       */
      _postman_propertyIndexKey: 'key',
  
      /**
       * Form params can have multiple values, so set this to true.
       *
       * @type {Boolean}
       */
      _postman_propertyAllowsMultipleValues: true,
  
      /**
       * Parse a form data string into an array of objects, where each object contains a key and a value.
       *
       * @todo implement this, not implemented yet.
       * @param formdata {String}
       * @returns {Array}
       */
      parse: _.noop
  });
  
  module.exports = {
      FormParam
  };
  