source: Dev/trunk/src/client/dojox/mvc/getPlainValue.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.1 KB
Line 
1define([
2        "dojo/_base/array",
3        "dojo/_base/lang",
4        "dojo/Stateful"
5], function(array, lang, Stateful){
6        var getPlainValueOptions = {
7                // summary:
8                //              Options used for dojox/mvc/getPlainValue().
9
10                getType: function(/*Anything*/ v){
11                        // summary:
12                        //              Returns the type of the given value.
13                        // v: Anything
14                        //              The value.
15                        // returns:
16                        //               The type of the given value.
17
18                        return lang.isArray(v) ? "array" : v != null && {}.toString.call(v) == "[object Object]" ? "object" : "value";
19                },
20
21                getPlainArray: function(/*Anything[]*/ a){
22                        // summary:
23                        //              Returns the stateful version of the given array.
24                        // a: Anything[]
25                        //              The array.
26                        // returns:
27                        //               The converted array.
28
29                        return array.map(a, function(item){ return getPlainValue(item, this); }, this); // Anything[]
30                },
31
32                getPlainObject: function(/*Object*/ o){
33                        // summary:
34                        //              Returns the stateful version of the given object.
35                        // o: Object
36                        //              The object.
37
38                        var plain = {};
39                        for(var s in o){
40                                if(!(s in Stateful.prototype) && s != "_watchCallbacks"){
41                                        plain[s] = getPlainValue(o[s], this);
42                                }
43                        }
44                        return plain; // Object
45                },
46
47                getPlainValue: function(/*Anything*/ v){
48                        // summary:
49                        //              Just returns the given value.
50
51                        return v; // Anything
52                }
53        };
54
55        var getPlainValue = function(/*Anything*/ value, /*dojox/mvc/getPlainValueOptions*/ options){
56                // summary:
57                //              Create a raw value from a dojo/Stateful object.
58                // description:
59                //              Recursively iterates the stateful value given, and convert them to raw ones.
60                // value: Anything
61                //              The stateful value.
62                // options: dojox/mvc/getPlainValueOptions
63                //              The object that defines how plain value should be created from stateful value.
64                // returns:
65                //               The converted value.
66
67                return (options || getPlainValue)["getPlain" + (options || getPlainValue).getType(value).replace(/^[a-z]/, function(c){ return c.toUpperCase(); })](value); // Anything
68        };
69
70        // lang.setObject() thing is for back-compat, remove it in 2.0
71        return lang.setObject("dojox.mvc.getPlainValue", lang.mixin(getPlainValue, getPlainValueOptions));
72});
Note: See TracBrowser for help on using the repository browser.