| 
					
				 | 
			
			
				@@ -52,6 +52,7 @@ var defaults = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		'deploy': false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		'libraries': [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		'compile': [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		'compiled_categories': [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		'compiled': [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		'program': undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -250,10 +251,12 @@ function collect_files(filesArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		switch (suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			case '.st': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				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'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 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'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					throw(new Error('File not found: ' + currentFile)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -322,7 +325,7 @@ function create_compiler(compilerFilesArray) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function compile() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	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'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	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)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			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()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 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)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |