Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/platforms/browser/inline.js
blob: 16d8b1113c8b6ffd6e601abf4f3dbe65ba2fd730 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(function (ids, id, path) {

    var factories = {};
    var pending;

    var require = this.require = function (id, baseId) {
        // defer to require set later from the sandbox module
        require(id, baseId);
    };

    require.register = function (id, factory) {
        factories[id] = factory;
        if (!--pending)
            main();
    };

    var pending = ids.length;
    var head = document.getElementsByTagName('head')[0];
    for (var i = 0; i < pending; i++) {
        var script = document.createElement('script');
        script.src = path + ids[i] + '.js';
        head.appendChild(script);
    };

    function main() {

        var system = {};
        system.print = function () {
            if (typeof console != "undefined") {
                console.log(Array.prototype.join.call(arguments, ' '));
            }
        };

        var loader = {};
        loader.reload = function (topId) {
            return factories[topId];
        };
        loader.load = function (topId) {
            return loader.reload(topId);
        };

        var sandbox = {};
        loader.load('sandbox')(
            null,
            sandbox,
            {},
            system,
            system.print
        );
        require = sandbox.Sandbox({loader: loader});
        loader.resolve = sandbox.resolve;
        require(id);

    }

})