#

API Docs for: 3.10.3
Show: Inherited Protected Private Deprecated

# File: dataschema/js/dataschema-base.js

    /**
     * The DataSchema utility provides a common configurable interface for widgets to
     * apply a given schema to a variety of data.
     *
     * @module dataschema
     * @main dataschema
     */

    /**
     * Provides the base DataSchema implementation, which can be extended to
     * create DataSchemas for specific data formats, such XML, JSON, text and
     * arrays.
     *
     * @module dataschema
     * @submodule dataschema-base
     */

    var LANG = Y.Lang,
    /**
     * Base class for the YUI DataSchema Utility.
     * @class DataSchema.Base
     * @static
     */
        SchemaBase = {
        /**
         * Overridable method returns data as-is.
         *
         * @method apply
         * @param schema {Object} Schema to apply.
         * @param data {Object} Data.
         * @return {Object} Schema-parsed data.
         * @static
         */
        apply: function(schema, data) {
            return data;
        },

        /**
         * Applies field parser, if defined
         *
         * @method parse
         * @param value {Object} Original value.
         * @param field {Object} Field.
         * @return {Object} Type-converted value.
         */
        parse: function(value, field) {
            if(field.parser) {
                var parser = (LANG.isFunction(field.parser)) ?
                field.parser : Y.Parsers[field.parser+''];
                if(parser) {
                    value = parser.call(this, value);
                }
                else {
                    Y.log("Could not find parser for field " + Y.dump(field), "warn", "dataschema-json");
                }
            }
            return value;
        }
    };

    Y.namespace("DataSchema").Base = SchemaBase;
    Y.namespace("Parsers");