108 lines
2.5 KiB
JavaScript
108 lines
2.5 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2006, The Dojo Foundation
|
|
All Rights Reserved.
|
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the
|
|
modified BSD license. For more information on Dojo licensing, see:
|
|
|
|
http://dojotoolkit.org/community/licensing.shtml
|
|
*/
|
|
|
|
dojo.provide("dojo.lang.extras");
|
|
|
|
dojo.require("dojo.lang.common");
|
|
|
|
/**
|
|
* Sets a timeout in milliseconds to execute a function in a given context
|
|
* with optional arguments.
|
|
*
|
|
* setTimeout (Object context, function func, number delay[, arg1[, ...]]);
|
|
* setTimeout (function func, number delay[, arg1[, ...]]);
|
|
*/
|
|
dojo.lang.setTimeout = function(func, delay){
|
|
var context = window, argsStart = 2;
|
|
if(!dojo.lang.isFunction(func)){
|
|
context = func;
|
|
func = delay;
|
|
delay = arguments[2];
|
|
argsStart++;
|
|
}
|
|
|
|
if(dojo.lang.isString(func)){
|
|
func = context[func];
|
|
}
|
|
|
|
var args = [];
|
|
for (var i = argsStart; i < arguments.length; i++) {
|
|
args.push(arguments[i]);
|
|
}
|
|
return setTimeout(function () { func.apply(context, args); }, delay);
|
|
}
|
|
|
|
dojo.lang.getNameInObj = function(ns, item){
|
|
if(!ns){ ns = dj_global; }
|
|
|
|
for(var x in ns){
|
|
if(ns[x] === item){
|
|
return new String(x);
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
dojo.lang.shallowCopy = function(obj) {
|
|
var ret = {}, key;
|
|
for(key in obj) {
|
|
if(dojo.lang.isUndefined(ret[key])) {
|
|
ret[key] = obj[key];
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* Return the first argument that isn't undefined
|
|
*/
|
|
dojo.lang.firstValued = function(/* ... */) {
|
|
for(var i = 0; i < arguments.length; i++) {
|
|
if(typeof arguments[i] != "undefined") {
|
|
return arguments[i];
|
|
}
|
|
}
|
|
return undefined;
|
|
}
|
|
|
|
/**
|
|
* Get a value from a reference specified as a string descriptor,
|
|
* (e.g. "A.B") in the given context.
|
|
*
|
|
* getObjPathValue(String objpath [, Object context, Boolean create])
|
|
*
|
|
* If context is not specified, dj_global is used
|
|
* If create is true, undefined objects in the path are created.
|
|
*/
|
|
dojo.lang.getObjPathValue = function(objpath, context, create){
|
|
with(dojo.parseObjPath(objpath, context, create)){
|
|
return dojo.evalProp(prop, obj, create);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Set a value on a reference specified as a string descriptor.
|
|
* (e.g. "A.B") in the given context.
|
|
*
|
|
* setObjPathValue(String objpath, value [, Object context, Boolean create])
|
|
*
|
|
* If context is not specified, dj_global is used
|
|
* If create is true, undefined objects in the path are created.
|
|
*/
|
|
dojo.lang.setObjPathValue = function(objpath, value, context, create){
|
|
if(arguments.length < 4){
|
|
create = true;
|
|
}
|
|
with(dojo.parseObjPath(objpath, context, create)){
|
|
if(obj && (create || (prop in obj))){
|
|
obj[prop] = value;
|
|
}
|
|
}
|
|
}
|