YUI 3.x Home -

Site Search (YDN & YUIBlog):

# YUI Library Examples: DataSchema Utility: Enforcing DataTypes

## DataSchema Utility: Enforcing DataTypes

DataSchema supports a `parser` property that enforces type conversion on data as the schema is being applied. The `parser` property can point to one of the following types of parsing functions:

- A DataType subclass parse function, like `Y.DataType.Number.parse`
- A registered shortcut to a DataType subclass parse function, like `"number"`
- A custom function

View example in new window.

#### Basic example

###### Data

    {
        "results":[
            {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"},
            {"string":"bat", "number":"2", "date":"Feb 2, 2002"},
            {"string":"camel", "number":"3", "date":"March 3, 2003"}
        ]
    }

###### Schema

    {
        resultListLocator: "results",
        resultFields: [
            "string", // needs no parsing
            {key:"number", parser: "number"}, // point to built-in shortcut
            {key:"date", parser: Y.DataType.Date.parse}] // point to function
    }

###### Normalized data

Use the `parser` property in your schema's `resultFields` definition to point to a parsing function. Parsing your data in this manner is essential if your numerical or date data comes over the wire as JSON, since all the values will be strings.

    YUI().use("datatype", "dataschema", function(Y) {    var data_in = {            "results":[                {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"},                {"string":"bat", "number":"2", "date":"Feb 2, 2002"},                {"string":"camel", "number":"3", "date":"March 3, 2003"}            ]        },        schema = {            resultListLocator: "results",            resultFields: [                // needs no parsing                "string",                // point parser to built-in function shortcut                {key:"number", parser: "number"},                // point parser to built-in function                {key:"date", parser: Y.DataType.Date.parse}]        },        data_out = Y.DataSchema.JSON.apply(schema, data_in).results;});

    YUI().use("datatype", "dataschema", function(Y) {
        var data_in = {
                "results":[
                    {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"},
                    {"string":"bat", "number":"2", "date":"Feb 2, 2002"},
                    {"string":"camel", "number":"3", "date":"March 3, 2003"}
                ]
            },
            schema = {
                resultListLocator: "results",
                resultFields: [
                    // needs no parsing
                    "string",
                    // point parser to built-in function shortcut
                    {key:"number", parser: "number"},
                    // point parser to built-in function
                    {key:"date", parser: Y.DataType.Date.parse}]
            },
            data_out = Y.DataSchema.JSON.apply(schema, data_in).results;
    });

YUI().use("datatype", "dataschema", function(Y) { var data_in = { "results":[ {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"}, {"string":"bat", "number":"2", "date":"Feb 2, 2002"}, {"string":"camel", "number":"3", "date":"March 3, 2003"} ] }, schema = { resultListLocator: "results", resultFields: [ // needs no parsing "string", // point parser to built-in function shortcut {key:"number", parser: "number"}, // point parser to built-in function {key:"date", parser: Y.DataType.Date.parse}] }, data_out = Y.DataSchema.JSON.apply(schema, data_in).results; });

Copyright © 2009 Yahoo! Inc. All rights reserved.

Privacy Policy - Terms of Service - Copyright Policy - Job Openings