aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/lang/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/lang/utils.js')
-rw-r--r--includes/js/dojox/lang/utils.js54
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
+ }
+ });
+})();
+
+}