3 var Loader = ROOT.Loader = {
10 exists: function(name) {
12 var chunks = name.split('.');
14 for (var i = 0; i < chunks.length; i++) {
15 if (!root.hasOwnProperty(chunks[i]))
18 root = root[chunks[i]];
24 setBasePath: function(name, path) {
30 Loader.paths[name] = path;
33 getBasePath: function(name) {
34 // Start with the base path
35 var path = Loader.paths._base;
37 // Iterate through each specified name path ("Ext.layout.Layout" => "js/Ext/layout/Layout.js")
38 for (var stub in Loader.paths) {
39 if (stub === name.substring(0, stub.length)) {
40 path += "/" + Loader.paths[stub];
41 // Remove stub from name, as we've already pathed it
42 name = name.substring(stub.length + 1);
47 return path + "/" + name.replace(/\./g, "/");
50 require: function(names, compulsory) {
51 if (compulsory == undefined)
54 if (typeof names == 'string')
57 names.forEach(function(name) {
58 if (!this.existing.hasOwnProperty(name)) {
59 // writeln(this.getBasePath(name) + '.js');
60 load(this.getBasePath(name) + '.js');
62 var loaded = this.exists(name);
63 this.existing[name] = loaded;
66 if (this.existing[name] == false && compulsory) {
67 throw new Error("[Loader] Failed loading '" + name + "'");