[ascoders] Re: Namensräume


hab das jetzt mal zusammengebaut. Es wird jetzt doch NUR in den aktivierten
Namensräumen gesucht - denke, das ist näher am Java-Verhalten, wo ja auch
nur importierte Packages durchsucht werden.

Yup, ich denke es wäre sogar intuitiver, das in einem Ruck zu machen, d.h. wenn der Pfad gebastelt wird, diesen gleich komplett in der Liste zu registrieren, e.g.


...

if (o[name] == undefined) {
        o[name] = new Object();
        this.push(o[name]);
        ASSetPropFlags(o, name, 1, 0); // optional
}

...

Oder komplett dann:

__________________________________________________________________

/////////////////////////////////////////////////
// ASNamespace Setup
/////////////////////////////////////////////////

_global.__resolve = function(c) {
        for (var i = 0; i < ASNamespace.length; i++) {
                if (typeof ASNamespace[i][c] == "function") {
                        return ASNamespace[i][c];
                }
        }
};

// ----------------------------------------------
_global.ASNamespace = new Array();

ASNamespace.initializePackage = function(path) {
        // avoid calls when checking for object
        var r = _global.__resolve;
        delete _global.__resolve;

        var a = path.split('.');
        var o = _global;
        var currentPath = a[0];
        for (var i = 0; i < a.length; i++) {
                var name = a[i];
                if (o[name] == undefined) {
                        o[name] = new Object();
                        this.push(o[name]);
                        ASSetPropFlags(o, name, 1, 0); // optional
                }
                o = o[name];
        }
        _global.__resolve = r;
        return o; // return shortcut
};

ASSetPropFlags(_global, "ASNamespace", 7, 0);

/////////////////////////////////////////////////
// Usage
/////////////////////////////////////////////////

var ns = ASNamespace.initializePackage("com.macromedia.secret");

_global.com.macromedia.secret.BetaClass = function() {
        trace("com.macromedia.secret.BetaClass");
};

_global.com.macromedia.StandardClass = function() {
        trace("com.macromedia.StandardClass");
};

// ----------------------------------------------

var ns = ASNamespace.initializePackage("de.ascoders.central");

_global.de.ascoders.central.RIAManager = function() {
        trace("de.ascoders.central.RIAManager");
};
_global.de.ascoders.StandardClass = function(x) {
        trace("de.ascoders.StandardClass");
};

// ----------------------------------------------

obj1 = new BetaClass();
obj2 = new com.macromedia.BetaClass(); // not found
obj3 = new StandardClass();

obj4 = new de.ascoders.StandardClass();
obj5 = new de.ascoders.central.RIAManager();
obj6 = new RIAManager();


______________________________________________________________


Ausgabe
______________________________________________________________

/*

com.macromedia.secret.BetaClass
com.macromedia.StandardClass
de.ascoders.StandardClass
de.ascoders.central.RIAManager
de.ascoders.central.RIAManager

*/

ralf ...


------------------------------------------------------ Archiv : http://www.freelists.org/archives/ascoders/ Optionen : http://www.freelists.org/list/ascoders ------------------------------------------------------

Other related posts: