Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | 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.AdapterRegistry");
dojo.require("dojo.lang.func");
dojo.AdapterRegistry = function (returnWrappers) {
        this.pairs = [];
        this.returnWrappers = returnWrappers || false;
};
dojo.lang.extend(dojo.AdapterRegistry, {register:function (name, check, wrap, directReturn, override) {
        var type = (override) ? "unshift" : "push";
        this.pairs[type]([name, check, wrap, directReturn]);
}, match:function () {
        for (var i = 0; i < this.pairs.length; i++) {
                var pair = this.pairs[i];
                if (pair[1].apply(this, arguments)) {
                        if ((pair[3]) || (this.returnWrappers)) {
                                return pair[2];
                        } else {
                                return pair[2].apply(this, arguments);
                        }
                }
        }
        throw new Error("No match found");
}, unregister:function (name) {
        for (var i = 0; i < this.pairs.length; i++) {
                var pair = this.pairs[i];
                if (pair[0] == name) {
                        this.pairs.splice(i, 1);
                        return true;
                }
        }
        return false;
}});