/**
 * A data field that automatically {@link #convert converts} its value to a boolean.
 *
 *     @example
 *     Ext.define('Task', {
 *         extend: 'Ext.data.Model',
 *         fields: [
 *             { name: 'completed', type: 'boolean' }
 *         ]
 *     });
 *
 *     var record = Ext.create('Task', { completed: true }),
 *         value = record.get('completed');
 *
 *     Ext.toast("completed is " + value);
 */
Ext.define('Ext.data.field.Boolean', {
    extend: 'Ext.data.field.Field',
 
    alias: [
        'data.field.bool',
        'data.field.boolean'
    ],
 
    isBooleanField: true,
 
    /**
     * @property [trueRe]
     * Values matching this regular expression are considered `true`.
     */
    trueRe: /^\s*(?:true|yes|on|1)\s*$/i,
 
    convert: function(v) {
        if (typeof v === 'boolean') {
            return v;
        }
        
        if (this.allowNull && (=== undefined || v === null || v === '')) {
            return null;
        }
        
        return this.trueRe.test(String(v));
    },
    
    getType: function() {
        return 'bool';
    }
});