blob: 9c56fe9588dc15bc3c31ae4477addae392fb0528 [file] [log] [blame]
/*
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.repr");
dojo.require("dojo.lang.common");
dojo.require("dojo.AdapterRegistry");
dojo.require("dojo.string.extras");
dojo.lang.reprRegistry = new dojo.AdapterRegistry();
dojo.lang.registerRepr = function (name, check, wrap, override) {
dojo.lang.reprRegistry.register(name, check, wrap, override);
};
dojo.lang.repr = function (obj) {
if (typeof (obj) == "undefined") {
return "undefined";
} else {
if (obj === null) {
return "null";
}
}
try {
if (typeof (obj["__repr__"]) == "function") {
return obj["__repr__"]();
} else {
if ((typeof (obj["repr"]) == "function") && (obj.repr != arguments.callee)) {
return obj["repr"]();
}
}
return dojo.lang.reprRegistry.match(obj);
}
catch (e) {
if (typeof (obj.NAME) == "string" && (obj.toString == Function.prototype.toString || obj.toString == Object.prototype.toString)) {
return obj.NAME;
}
}
if (typeof (obj) == "function") {
obj = (obj + "").replace(/^\s+/, "");
var idx = obj.indexOf("{");
if (idx != -1) {
obj = obj.substr(0, idx) + "{...}";
}
}
return obj + "";
};
dojo.lang.reprArrayLike = function (arr) {
try {
var na = dojo.lang.map(arr, dojo.lang.repr);
return "[" + na.join(", ") + "]";
}
catch (e) {
}
};
(function () {
var m = dojo.lang;
m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike);
m.registerRepr("string", m.isString, m.reprString);
m.registerRepr("numbers", m.isNumber, m.reprNumber);
m.registerRepr("boolean", m.isBoolean, m.reprNumber);
})();