|
@@ -38,16 +38,17 @@ function createConcatenator () {
|
|
|
start: function () {
|
|
|
this.add(
|
|
|
'var define = (' + require('amdefine') + ')(null, function (id) { throw new Error("Dependency not found: " + id); }), requirejs = define.require;',
|
|
|
- 'define("amber_vm/browser-compatibility", [], {});'
|
|
|
+ 'define("amber_vm/browser-compatibility", [], {});',
|
|
|
+ 'define("amber/browser-compatibility", [], {});'
|
|
|
);
|
|
|
},
|
|
|
finish: function (realWork) {
|
|
|
this.add(
|
|
|
- 'define("amber_vm/_init", ["amber_vm/smalltalk", "amber_vm/globals", "' + this.ids.join('","') + '"], function (vm, globals) {',
|
|
|
- 'vm.initialize();',
|
|
|
+ 'define("amber/_init", ["' + this.ids.join('","') + '"], function (boot) {',
|
|
|
+ 'boot.vm.initialize();',
|
|
|
realWork,
|
|
|
'});',
|
|
|
- 'requirejs("amber_vm/_init");'
|
|
|
+ 'requirejs("amber/_init");'
|
|
|
);
|
|
|
},
|
|
|
toString: function () {
|
|
@@ -71,6 +72,7 @@ function AmberCompiler(amber_dir) {
|
|
|
}
|
|
|
|
|
|
this.amber_dir = amber_dir;
|
|
|
+ // Important: in next list, boot MUST be first
|
|
|
this.kernel_libraries = ['boot', 'smalltalk', 'globals', 'nil', '_st', 'Kernel-Objects', 'Kernel-Classes', 'Kernel-Methods',
|
|
|
'Kernel-Collections', 'Kernel-Infrastructure', 'Kernel-Exceptions', 'Kernel-Transcript',
|
|
|
'Kernel-Announcements'];
|
|
@@ -120,6 +122,7 @@ AmberCompiler.prototype.main = function(configuration, finished_callback) {
|
|
|
if (undefined !== configuration.jsLibraryDirs) {
|
|
|
configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'src'));
|
|
|
configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'support'));
|
|
|
+ configuration.jsLibraryDirs.push(path.join(this.amber_dir, 'support', 'deprecated-vm-files'));
|
|
|
}
|
|
|
|
|
|
console.ambercLog = console.log;
|
|
@@ -325,9 +328,9 @@ function create_compiler(configuration) {
|
|
|
// data is an array where index 0 is the error code and index 1 contains the data
|
|
|
builder.add(data);
|
|
|
// matches and returns the "module_id" string in the AMD definition: define("module_id", ...)
|
|
|
- var match = ('' + data).match(/^define\("([^"]*)"/);
|
|
|
+ var match = ('' + data).match(/(^|\n)define\("([^"]*)"/);
|
|
|
if (match) {
|
|
|
- builder.addId(match[1]);
|
|
|
+ builder.addId(match[2]);
|
|
|
}
|
|
|
});
|
|
|
})
|
|
@@ -362,8 +365,11 @@ function create_compiler(configuration) {
|
|
|
loadIds.push(match[1]);
|
|
|
}
|
|
|
});
|
|
|
+ //backward compatibility
|
|
|
+ if (builder.ids.indexOf("amber_vm/boot") === -1) { console.log(builder.ids); console.log("defining amber_vm/boot"); builder.add('define("amber_vm/boot", ["amber/boot"], function (boot) { return boot; });'); }
|
|
|
+
|
|
|
// store the generated smalltalk env in configuration.{vm,globals}
|
|
|
- builder.finish('configuration.vm = vm; configuration.globals = globals;');
|
|
|
+ builder.finish('configuration.vm = boot.vm; configuration.globals = boot.globals;');
|
|
|
loadIds.forEach(function (id) {
|
|
|
builder.add('requirejs("' + id + '");');
|
|
|
});
|
|
@@ -547,9 +553,9 @@ function compose_js_files(configuration) {
|
|
|
console.log('Adding : ' + file);
|
|
|
var buffer = fs.readFileSync(file);
|
|
|
// matches and returns the "module_id" string in the AMD define: define("module_id", ...)
|
|
|
- var match = buffer.toString().match(/^define\("([^"]*)"/);
|
|
|
+ var match = buffer.toString().match(/(^|\n)define\("([^"]*)"/);
|
|
|
if (match /*&& match[1].slice(0,9) !== "amber_vm/"*/) {
|
|
|
- builder.addId(match[1]);
|
|
|
+ builder.addId(match[2]);
|
|
|
}
|
|
|
builder.add(buffer);
|
|
|
} else {
|
|
@@ -557,8 +563,10 @@ function compose_js_files(configuration) {
|
|
|
reject(Error('Can not find file ' + file));
|
|
|
}
|
|
|
});
|
|
|
+ //backward compatibility
|
|
|
+ if (builder.ids.indexOf("amber_vm/boot") === -1) { builder.add('define("amber_vm/boot", ["amber/boot"], function (boot) { return boot; });'); }
|
|
|
|
|
|
- var mainFunctionOrFile = '';
|
|
|
+ var mainFunctionOrFile = 'var vm = boot.vm, globals = boot.globals;\n';
|
|
|
|
|
|
if (undefined !== configuration.main) {
|
|
|
console.log('Adding call to: %s>>main', configuration.main);
|