Could be a good implementation, Rajeev.

I actually don't use it because I load files using synchronous XHR
requests so I assume it is loaded the very next instruction. This is
why I can't use the onComplete event of Asset.javascript, but could be
good to have some elements audit "requred class" event

I'll implement.

thanks

On 15 Ott, 05:37, "Rajeev J Sebastian" <[EMAIL PROTECTED]>
wrote:
> Have you also fired any event to notify the rest of the code that all
> dependencies have loaded ?
>
> something like ...
> window.fireEvent('depsloaded') or something ...
>
> Regards
> Rajeev J Sebastian
>
> On Tue, Oct 14, 2008 at 8:58 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
> > Hope can be useful to anyone:
>
> > I've created a little OOP extension to mootools for a project I'm
> > working on:
>
> > It's a Namespace function to define easily namespaces and a "require"
> > function that allow a javascript file to require another file, being
> > loaded on the fly.
>
> > You have to define before using require a global variable called
> > requiredPath to the path where to start loading javascripts.
>
> > the syntax is:
> > requiredPath="/path/to/scripts"
>
> > Requires("Validation.emailValidator")
>
> > will load a file from "/path/to/scripts/Validation/emailValidator.js"
>
> > it will be loaded once, even on subsequent calls.
>
> > For requiring a namespace:
>
> > Requires("Validation.*")
>
> > Will try to find a file "/path/to/scripts/Validation/_nsd.js"
> > where you'll have to define the many classes in namespace
>
> > for example, a _nsd file could be:
>
> > Requires(
> > "Validation.modes",
> > "Validation.validations",
> > "Validation.autoValidator"
> > );
>
> > For namespace definition:
>
> > Namespace("Validation",{
> >   autoValidator:new Class({
> >   })
> > })
>
> > //START OF CODE
>
> > Asset.extend({
> >        requiredClass: function(source, properties){
> >                if(source.test(/^.+\.\*$/)){
> >                        source=source.replace(".*","");
> >                        NameSpace(source,{});
> >                        source+="/_nsd";
> >                }
>
> > source=source.replace(".js","#js").replace(".","/").replace("#js",".js");
> >                if(Window.requiredPath){
> >                        source=Window.requiredPath+source;
> >                }
> >                if(!source.contains(".js")){
> >                        source=source+".js";
> >                }
> >                var scripts=$$("document head script");
> >                Window.loadedClasses=Window.loadedClasses || [];
> >                var sourceId=source.replace(".js","").clean().toLowerCase();
> >                $each(scripts,function(script){
>
> > Window.loadedClasses.include(script.get("src").clean().toLowerCase());
>
> >                });
> >                if (!Window.loadedClasses.contains(sourceId)) {
> >                        var a = new Request({
> >                                url: source,
> >                                async: false,
> >                                evalResponse: true,
> >                                method: "get"
> >                        }).send();
> >                        Window.loadedClasses.include(sourceId);
> >                        return Asset.javascript(source, properties);
> >                }
> >        }
> > });
> > function Requires(){
> >        $A(arguments).each(function(path){
> >                Asset.requiredClass(path);
> >        });
> > }
> > function NameSpace(namespace, definitions){
> >        var namespaceSplit=namespace.clean().split(".");
> >        var obj=window;
> >        for(var i=0; i<namespaceSplit.length;i++){
> >                var piece=namespaceSplit[i].clean();
> >                obj[piece]=$pick(obj[piece],{});
> >                obj=obj[piece];
> >        }
> >        $extend(obj,definitions || {});
> > }

Reply via email to