diff options
Diffstat (limited to 'includes/js/dojox/lang/utils.js')
-rw-r--r-- | includes/js/dojox/lang/utils.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/includes/js/dojox/lang/utils.js b/includes/js/dojox/lang/utils.js new file mode 100644 index 0000000..b7926c6 --- /dev/null +++ b/includes/js/dojox/lang/utils.js @@ -0,0 +1,54 @@ +if(!dojo._hasResource["dojox.lang.utils"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dojox.lang.utils"] = true; +dojo.provide("dojox.lang.utils"); + +(function(){ + var empty = {}, du = dojox.lang.utils; + + dojo.mixin(dojox.lang.utils, { + coerceType: function(target, source){ + switch(typeof target){ + case "number": return Number(eval("(" + source + ")")); + case "string": return String(source); + case "boolean": return Boolean(eval("(" + source + ")")); + } + return eval("(" + source + ")"); + }, + + updateWithObject: function(target, source, conv){ + // summary: updates an existing object in place with properties from an "source" object. + // target: Object: the "target" object to be updated + // source: Object: the "source" object, whose properties will be used to source the existed object. + // conv: Boolean?: force conversion to the original type + if(!source){ return target; } + for(var x in target){ + if(x in source && !(x in empty)){ + var t = target[x]; + if(t && typeof t == "object"){ + du.updateObject(t, source[x]); + }else{ + target[x] = conv ? du.coerceType(t, source[x]) : dojo.clone(source[x]); + } + } + } + return target; // Object + }, + + updateWithPattern: function(target, source, pattern, conv){ + // summary: updates an existing object in place with properties from an "source" object. + // target: Object: the "target" object to be updated + // source: Object: the "source" object, whose properties will be used to source the existed object. + // pattern: Array: an array of properties to be copied + // conv: Boolean?: force conversion to the original type + if(!source || !pattern){ return target; } + for(var x in pattern){ + if(x in source && !(x in empty)){ + target[x] = conv ? du.coerceType(pattern[x], source[x]) : dojo.clone(source[x]); + } + } + return target; // Object + } + }); +})(); + +} |