source: Dev/trunk/src/client/dojox/mvc/getStateful.js

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

Added Dojo 1.9.3 release.

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