Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

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

}