|  | @@ -52,6 +52,7 @@ var defaults = function() {
 | 
											
												
													
														|  |  		'deploy': false,
 |  |  		'deploy': false,
 | 
											
												
													
														|  |  		'libraries': [],
 |  |  		'libraries': [],
 | 
											
												
													
														|  |  		'compile': [],
 |  |  		'compile': [],
 | 
											
												
													
														|  | 
 |  | +		'compiled_categories': [],
 | 
											
												
													
														|  |  		'compiled': [],
 |  |  		'compiled': [],
 | 
											
												
													
														|  |  		'program': undefined
 |  |  		'program': undefined
 | 
											
												
													
														|  |  	};
 |  |  	};
 | 
											
										
											
												
													
														|  | @@ -250,10 +251,12 @@ function collect_files(filesArray) {
 | 
											
												
													
														|  |  		switch (suffix) {
 |  |  		switch (suffix) {
 | 
											
												
													
														|  |  			case '.st':
 |  |  			case '.st':
 | 
											
												
													
														|  |  				if (path.existsSync(currentFile)) {
 |  |  				if (path.existsSync(currentFile)) {
 | 
											
												
													
														|  | -					defaults.compile.push(currentFile, category);
 |  | 
 | 
											
												
													
														|  | 
 |  | +					defaults.compile.push(currentFile);
 | 
											
												
													
														|  | 
 |  | +					defaults.compiled_categories.push(category);
 | 
											
												
													
														|  |  					defaults.compiled.push(category + defaults.suffix_used + '.js');
 |  |  					defaults.compiled.push(category + defaults.suffix_used + '.js');
 | 
											
												
													
														|  |  				} else if (path.existsSync(amberFile)) {
 |  |  				} else if (path.existsSync(amberFile)) {
 | 
											
												
													
														|  | -					defaults.compile.push(amberFile, category);
 |  | 
 | 
											
												
													
														|  | 
 |  | +					defaults.compile.push(amberFile);
 | 
											
												
													
														|  | 
 |  | +					defaults.compiled_categories.push(category);
 | 
											
												
													
														|  |  					defaults.compiled.push(category + defaults.suffix_used + '.js');
 |  |  					defaults.compiled.push(category + defaults.suffix_used + '.js');
 | 
											
												
													
														|  |  				} else {
 |  |  				} else {
 | 
											
												
													
														|  |  					throw(new Error('File not found: ' + currentFile));
 |  |  					throw(new Error('File not found: ' + currentFile));
 | 
											
										
											
												
													
														|  | @@ -322,7 +325,7 @@ function create_compiler(compilerFilesArray) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  function compile() {
 |  |  function compile() {
 | 
											
												
													
														|  |  	console.log('Compiling collected .st files to .js')
 |  |  	console.log('Compiling collected .st files to .js')
 | 
											
												
													
														|  | -	node_compile(defaults.compile);
 |  | 
 | 
											
												
													
														|  | 
 |  | +	node_compile(defaults.compile, defaults.compiled_categories);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	console.log('Verifying if all .st files were compiled');
 |  |  	console.log('Verifying if all .st files were compiled');
 | 
											
												
													
														|  |  	map(defaults.compiled, function(file, callback) {
 |  |  	map(defaults.compiled, function(file, callback) {
 | 
											
										
											
												
													
														|  | @@ -341,24 +344,26 @@ function compile() {
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -function node_compile(filesArray) {
 |  | 
 | 
											
												
													
														|  | -	// The filesArray variable is a series of .st filenames and category names.
 |  | 
 | 
											
												
													
														|  | -	// If it is a .st file we import it, if it is a category name we export it
 |  | 
 | 
											
												
													
														|  | -	// as aCategoryName.js.
 |  | 
 | 
											
												
													
														|  | 
 |  | +function node_compile(smalltalkFiles, categories) {
 | 
											
												
													
														|  | 
 |  | +	// the smalltalkFiles variable is a series of .st filenames to be imported
 | 
											
												
													
														|  | 
 |  | +	// the categories variable holds category names to be exported as aCategoryName.js.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	// If it ends with .st, import it, otherwise export category as .js
 |  | 
 | 
											
												
													
														|  | -	filesArray.forEach(function(val, index, array) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	// import .st files
 | 
											
												
													
														|  | 
 |  | +	smalltalkFiles.forEach(function(val) {
 | 
											
												
													
														|  |  		if (/\.st/.test(val)) {
 |  |  		if (/\.st/.test(val)) {
 | 
											
												
													
														|  | -			console.log("Reading file " + val);
 |  | 
 | 
											
												
													
														|  | -			code = fs.readFileSync(val, "utf8");
 |  | 
 | 
											
												
													
														|  | 
 |  | +			console.log("Importing: " + val);
 | 
											
												
													
														|  | 
 |  | +			var code = fs.readFileSync(val, "utf8");
 | 
											
												
													
														|  |  			defaults.smalltalk.Importer._new()._import_(code._stream());
 |  |  			defaults.smalltalk.Importer._new()._import_(code._stream());
 | 
											
												
													
														|  | -		} else {
 |  | 
 | 
											
												
													
														|  | -			console.log("Exporting " + (defaults.deploy ? "(debug + deploy)" : "(debug)") + " category "
 |  | 
 | 
											
												
													
														|  | -				+ val + " as " + val + defaults.suffix_used + ".js" + (defaults.deploy ? " and " + val + defaults.suffix_used + ".deploy.js" : ""));
 |  | 
 | 
											
												
													
														|  | -			fs.writeFileSync(val + defaults.suffix_used + ".js", defaults.smalltalk.Exporter._new()._exportPackage_(val));
 |  | 
 | 
											
												
													
														|  | -			if (defaults.deploy) {
 |  | 
 | 
											
												
													
														|  | -				fs.writeFileSync(val + defaults.suffix_used + ".deploy.js", defaults.smalltalk.StrippedExporter._new()._exportPackage_(val));
 |  | 
 | 
											
												
													
														|  | -			}
 |  | 
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	});
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	// export categories as .js
 | 
											
												
													
														|  | 
 |  | +	categories.forEach(function(val) {
 | 
											
												
													
														|  | 
 |  | +		console.log("Exporting " + (defaults.deploy ? "(debug + deploy)" : "(debug)") + " category "
 | 
											
												
													
														|  | 
 |  | +			+ val + " as " + val + defaults.suffix_used + ".js" + (defaults.deploy ? " and " + val + defaults.suffix_used + ".deploy.js" : ""));
 | 
											
												
													
														|  | 
 |  | +		fs.writeFileSync(val + defaults.suffix_used + ".js", defaults.smalltalk.Exporter._new()._exportPackage_(val));
 | 
											
												
													
														|  | 
 |  | +		if (defaults.deploy) {
 | 
											
												
													
														|  | 
 |  | +			fs.writeFileSync(val + defaults.suffix_used + ".deploy.js", defaults.smalltalk.StrippedExporter._new()._exportPackage_(val));
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	});
 |  |  	});
 | 
											
												
													
														|  |  }
 |  |  }
 |