Subversion Repositories Applications.papyrus

Rev

Rev 1371 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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