8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly<div class="intro">
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly <p>DataSchema supports a <code>parser</code> property that enforces type conversion on data as the schema is being applied. The <code>parser</code> property can point to one of the following types of parsing functions:</p>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly <ul>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly <li>A DataType subclass parse function, like <code>Y.DataType.Number.parse</code></li>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly <li>A registered shortcut to a DataType subclass parse function, like <code>"number"</code></li>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly <li>A custom function</li>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly </ul>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly</div>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
819e90d415ed17d59af3a247b2ad9d6feb0c21b5Luke Smith<div class="example yui3-skin-sam">
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {{>dataschema-parsing-source}}
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly</div>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly<p>Use the <code>parser</code> property in your schema's <code>resultFields</code> 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.</p>
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly```
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyYUI().use("datatype", "dataschema", function(Y) {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly var data_in = {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly "results":[
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {"string":"aardvark", "number":"1", "date":"Jan 1, 2001"},
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {"string":"bat", "number":"2", "date":"Feb 2, 2002"},
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {"string":"camel", "number":"3", "date":"March 3, 2003"}
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly ]
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly },
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly schema = {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly resultListLocator: "results",
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly resultFields: [
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly // needs no parsing
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly "string",
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly // point parser to built-in function shortcut
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {key:"number", parser: "number"},
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly // point parser to built-in function
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly {key:"date", parser: Y.DataType.Date.parse}]
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly },
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly data_out = Y.DataSchema.JSON.apply(schema, data_in).results;
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly});
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly```