Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.lang.type");
13
dojo.provide("dojo.lang.type");
12
dojo.require("dojo.lang.common");
14
dojo.require("dojo.lang.common");
13
dojo.lang.whatAmI = function (value) {
15
dojo.lang.whatAmI = function (value) {
14
	dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5");
16
	dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5");
15
	return dojo.lang.getType(value);
17
	return dojo.lang.getType(value);
16
};
18
};
17
dojo.lang.whatAmI.custom = {};
19
dojo.lang.whatAmI.custom = {};
18
dojo.lang.getType = function (value) {
20
dojo.lang.getType = function (value) {
19
	try {
21
	try {
20
		if (dojo.lang.isArray(value)) {
22
		if (dojo.lang.isArray(value)) {
21
			return "array";
23
			return "array";
22
		}
24
		}
23
		if (dojo.lang.isFunction(value)) {
25
		if (dojo.lang.isFunction(value)) {
24
			return "function";
26
			return "function";
25
		}
27
		}
26
		if (dojo.lang.isString(value)) {
28
		if (dojo.lang.isString(value)) {
27
			return "string";
29
			return "string";
28
		}
30
		}
29
		if (dojo.lang.isNumber(value)) {
31
		if (dojo.lang.isNumber(value)) {
30
			return "number";
32
			return "number";
31
		}
33
		}
32
		if (dojo.lang.isBoolean(value)) {
34
		if (dojo.lang.isBoolean(value)) {
33
			return "boolean";
35
			return "boolean";
34
		}
36
		}
35
		if (dojo.lang.isAlien(value)) {
37
		if (dojo.lang.isAlien(value)) {
36
			return "alien";
38
			return "alien";
37
		}
39
		}
38
		if (dojo.lang.isUndefined(value)) {
40
		if (dojo.lang.isUndefined(value)) {
39
			return "undefined";
41
			return "undefined";
40
		}
42
		}
41
		for (var name in dojo.lang.whatAmI.custom) {
43
		for (var name in dojo.lang.whatAmI.custom) {
42
			if (dojo.lang.whatAmI.custom[name](value)) {
44
			if (dojo.lang.whatAmI.custom[name](value)) {
43
				return name;
45
				return name;
44
			}
46
			}
45
		}
47
		}
46
		if (dojo.lang.isObject(value)) {
48
		if (dojo.lang.isObject(value)) {
47
			return "object";
49
			return "object";
48
		}
50
		}
49
	}
51
	}
50
	catch (e) {
52
	catch (e) {
51
	}
53
	}
52
	return "unknown";
54
	return "unknown";
53
};
55
};
54
dojo.lang.isNumeric = function (value) {
56
dojo.lang.isNumeric = function (value) {
55
	return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value));
57
	return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value));
56
};
58
};
57
dojo.lang.isBuiltIn = function (value) {
59
dojo.lang.isBuiltIn = function (value) {
58
	return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error"));
60
	return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error"));
59
};
61
};
60
dojo.lang.isPureObject = function (value) {
62
dojo.lang.isPureObject = function (value) {
61
	return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object);
63
	return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object);
62
};
64
};
63
dojo.lang.isOfType = function (value, type, keywordParameters) {
65
dojo.lang.isOfType = function (value, type, keywordParameters) {
64
	var optional = false;
66
	var optional = false;
65
	if (keywordParameters) {
67
	if (keywordParameters) {
66
		optional = keywordParameters["optional"];
68
		optional = keywordParameters["optional"];
67
	}
69
	}
68
	if (optional && ((value === null) || dojo.lang.isUndefined(value))) {
70
	if (optional && ((value === null) || dojo.lang.isUndefined(value))) {
69
		return true;
71
		return true;
70
	}
72
	}
71
	if (dojo.lang.isArray(type)) {
73
	if (dojo.lang.isArray(type)) {
72
		var arrayOfTypes = type;
74
		var arrayOfTypes = type;
73
		for (var i in arrayOfTypes) {
75
		for (var i in arrayOfTypes) {
74
			var aType = arrayOfTypes[i];
76
			var aType = arrayOfTypes[i];
75
			if (dojo.lang.isOfType(value, aType)) {
77
			if (dojo.lang.isOfType(value, aType)) {
76
				return true;
78
				return true;
77
			}
79
			}
78
		}
80
		}
79
		return false;
81
		return false;
80
	} else {
82
	} else {
81
		if (dojo.lang.isString(type)) {
83
		if (dojo.lang.isString(type)) {
82
			type = type.toLowerCase();
84
			type = type.toLowerCase();
83
		}
85
		}
84
		switch (type) {
86
		switch (type) {
85
		  case Array:
87
		  case Array:
86
		  case "array":
88
		  case "array":
87
			return dojo.lang.isArray(value);
89
			return dojo.lang.isArray(value);
88
		  case Function:
90
		  case Function:
89
		  case "function":
91
		  case "function":
90
			return dojo.lang.isFunction(value);
92
			return dojo.lang.isFunction(value);
91
		  case String:
93
		  case String:
92
		  case "string":
94
		  case "string":
93
			return dojo.lang.isString(value);
95
			return dojo.lang.isString(value);
94
		  case Number:
96
		  case Number:
95
		  case "number":
97
		  case "number":
96
			return dojo.lang.isNumber(value);
98
			return dojo.lang.isNumber(value);
97
		  case "numeric":
99
		  case "numeric":
98
			return dojo.lang.isNumeric(value);
100
			return dojo.lang.isNumeric(value);
99
		  case Boolean:
101
		  case Boolean:
100
		  case "boolean":
102
		  case "boolean":
101
			return dojo.lang.isBoolean(value);
103
			return dojo.lang.isBoolean(value);
102
		  case Object:
104
		  case Object:
103
		  case "object":
105
		  case "object":
104
			return dojo.lang.isObject(value);
106
			return dojo.lang.isObject(value);
105
		  case "pureobject":
107
		  case "pureobject":
106
			return dojo.lang.isPureObject(value);
108
			return dojo.lang.isPureObject(value);
107
		  case "builtin":
109
		  case "builtin":
108
			return dojo.lang.isBuiltIn(value);
110
			return dojo.lang.isBuiltIn(value);
109
		  case "alien":
111
		  case "alien":
110
			return dojo.lang.isAlien(value);
112
			return dojo.lang.isAlien(value);
111
		  case "undefined":
113
		  case "undefined":
112
			return dojo.lang.isUndefined(value);
114
			return dojo.lang.isUndefined(value);
113
		  case null:
115
		  case null:
114
		  case "null":
116
		  case "null":
115
			return (value === null);
117
			return (value === null);
116
		  case "optional":
118
		  case "optional":
117
			dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5");
119
			dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5");
118
			return ((value === null) || dojo.lang.isUndefined(value));
120
			return ((value === null) || dojo.lang.isUndefined(value));
119
		  default:
121
		  default:
120
			if (dojo.lang.isFunction(type)) {
122
			if (dojo.lang.isFunction(type)) {
121
				return (value instanceof type);
123
				return (value instanceof type);
122
			} else {
124
			} else {
123
				dojo.raise("dojo.lang.isOfType() was passed an invalid type");
125
				dojo.raise("dojo.lang.isOfType() was passed an invalid type");
124
			}
126
			}
125
		}
127
		}
126
	}
128
	}
127
	dojo.raise("If we get here, it means a bug was introduced above.");
129
	dojo.raise("If we get here, it means a bug was introduced above.");
128
};
130
};
129
dojo.lang.getObject = function (str) {
131
dojo.lang.getObject = function (str) {
130
	var parts = str.split("."), i = 0, obj = dj_global;
132
	var parts = str.split("."), i = 0, obj = dj_global;
131
	do {
133
	do {
132
		obj = obj[parts[i++]];
134
		obj = obj[parts[i++]];
133
	} while (i < parts.length && obj);
135
	} while (i < parts.length && obj);
134
	return (obj != dj_global) ? obj : null;
136
	return (obj != dj_global) ? obj : null;
135
};
137
};
136
dojo.lang.doesObjectExist = function (str) {
138
dojo.lang.doesObjectExist = function (str) {
137
	var parts = str.split("."), i = 0, obj = dj_global;
139
	var parts = str.split("."), i = 0, obj = dj_global;
138
	do {
140
	do {
139
		obj = obj[parts[i++]];
141
		obj = obj[parts[i++]];
140
	} while (i < parts.length && obj);
142
	} while (i < parts.length && obj);
141
	return (obj && obj != dj_global);
143
	return (obj && obj != dj_global);
142
};
144
};
143
 
145