diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/docs/dataschema/dataschema-parsing.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/docs/dataschema/dataschema-parsing.html Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,301 @@ + + + + + Example: Enforcing DataTypes + + + + + + + + + + +
+
+

+
+ + +

Example: 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
  • +
+
+ +
+ + +
+

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;
+});
+ +
+
+
+ +
+ +
+
+
+ + + + + + + + + + +