Source: lib/fields/char.js

/*jshint laxcomma: true, smarttabs: true, node: true*/
'use strict';
/**
 * Resource Field for dealing with strings
 * @module tastypie/fields/char
 * @author Eric Satterwhite
 * @since 0.5.0
 * @requires tastypie/lib/class
 * @requires tastypie/lib/class/options
 * @requires tastypie/lib/fields/api
 */

var Class          = require( '../class' )
  , ApiField       = require('./api')
  , toArray        = require('mout/lang/toArray')
  , CharField
  ;

/**
 * Field class for dealing with string data
 * @constructor
 * @alias module:tastypie/fields/char
 * @extends module:tastypie/fields/api
 */
exports.CharField = CharField = new Class({
    inherits: ApiField
    , options:{
        help:'Forces values to string values by calling toString'
        ,enum: null
    }

    ,constructor: function( options ){
        this.parent('constructor', options);
        this.options.enum = toArray( this.options.enum );
    }

    ,convert: function( value ){
      return value === null ? value : value ? '' + value :'';
    }

    ,hydrate: function( bundle, cb ){
      this.parent('hydrate', bundle, (err, value) => {
        var idx;
        if( err ){
          return cb( err, null );
        }
        if( this.options.enum.length ){
          idx = this.options.enum.indexOf( value );
          value = idx >= 0 ? this.options.enum[ idx ]:this.default;
        }
        cb( null, value );
      });
    }
});

module.exports = CharField;