Przeglądaj źródła

Merge branch 'master' into ast-interpreter

Conflicts:
	js/Kernel-Objects.deploy.js
	js/Kernel-Objects.js
	st/Kernel-Objects.st
Nicolas Petton 12 lat temu
rodzic
commit
681dc4dd19
4 zmienionych plików z 67 dodań i 38 usunięć
  1. 3 2
      js/Kernel-Objects.deploy.js
  2. 1 1
      js/Kernel-Objects.js
  3. 62 34
      js/amber.js
  4. 1 1
      st/Kernel-Objects.st

+ 3 - 2
js/Kernel-Objects.deploy.js

@@ -669,8 +669,9 @@ smalltalk.method({
 selector: "value",
 fn: function (){
 var self=this;
-return smalltalk.withContext(function($ctx1) { 
return self;
-}, self, "value", [], smalltalk.Object)}
+return self.valueOf();
+;
+return self}
 }),
 smalltalk.Object);
 

+ 1 - 1
js/Kernel-Objects.js

@@ -934,7 +934,7 @@ var self=this;
 return smalltalk.withContext(function($ctx1) { 
return self;
 }, self, "value", [], smalltalk.Object)},
 args: [],
-source: "value\x0a\x09^ self",
+source: "value\x0a\x09<return self.valueOf()>",
 messageSends: [],
 referencedClasses: []
 }),

+ 62 - 34
js/amber.js

@@ -19,7 +19,7 @@ amber = (function() {
 	var spec;
 	var jsToLoad = [];
 	var loadJS;
-    var nocache = '';
+	var nocache = '';
 
 	that.toggleIDE = function() {
 		if ($('#amber').length == 0) {
@@ -56,9 +56,9 @@ amber = (function() {
 		}
 
 		loadDependencies();
-		addJSToLoad('lib/es5-shim-2.0.2/es5-shim.min.js');
-		addJSToLoad('lib/es5-shim-2.0.2/es5-sham.min.js');
-		addJSToLoad('boot.js');
+		addJSToLoad('js/lib/es5-shim-2.0.2/es5-shim.min.js');
+		addJSToLoad('js/lib/es5-shim-2.0.2/es5-sham.min.js');
+		addJSToLoad('js/boot.js');
 
 		if (deploy) {
 			loadPackages([
@@ -103,41 +103,69 @@ amber = (function() {
 		}
 
 		var additionalFiles = spec.packages || spec.files;
-        var commitPathForInit = null;
+		var commitPathForInit = null;
 		if (additionalFiles) {
 			commitPathForInit = loadPackages(additionalFiles, spec.prefix, spec.packageHome);
 		}
 
 		// Be sure to setup & initialize smalltalk classes
-		addJSToLoad('init.js');
+		addJSToLoad('js/init.js');
 		initializeSmalltalk(commitPathForInit);
 	};
 
 	function loadPackages(names, prefix, urlHome){
 		var name, url;
 		var prefix = prefix || 'js';
-    var urlHome = urlHome || home;
+		var urlHome = urlHome || home;
 
 		for (var i=0; i < names.length; i++) {
 			name = names[i].split(/\.js$/)[0];
 			addJSToLoad(name + '.js', prefix, urlHome);
 		}
 
-        return  {
-            js: urlHome+prefix,
-            st: urlHome+'st'
-        };
+		return  {
+			js: urlHome+prefix,
+			st: urlHome+'st'
+		};
 	};
 
 	function addJSToLoad(name, prefix, urlHome) {
-    var urlHome = urlHome || home;
+		var urlHome = urlHome || home;
 		jsToLoad.push(buildJSURL(name, prefix, urlHome));
 	};
 
+	function resolve(base, path) {
+		if (/(^|:)\/\//.test(path)) {
+			// path: [http:]//foo.com/bar/; base: whatever/
+			// -> http://foo.com/bar/
+			return path;
+		}
+		if (!/^\//.test(path)) {
+			// path: relative/; base: whatever/
+			// -> whatever/relative/
+			return base + path;
+		}
+		var match = base.match(/^(([^:/]*:|^)\/\/[^/]*)/);
+		if (match) {
+			// path: /absolute/; base: [http:]//foo.com/whatever/
+			// -> [http:]//foo.com/absolute/
+			return match[1] + path;
+		}
+		// path: /absolute/; base: whatever/path/
+		// -> /absolute/
+		return path;
+	}
+
 	function buildJSURL(name, prefix, urlHome) {
-		var prefix = prefix || 'js';
+		var prefix = prefix || '';
 		var name = name;
-    var urlHome = urlHome || home;
+		var urlHome = urlHome || home;
+
+		var parts = name.match(/^(.*\/)([^/]*)$/);
+		if (parts) {
+			name = parts[2];
+			urlHome = resolve(urlHome, parts[1]);
+		}
 
 		if (!deploy) {
 			name = name + nocache;
@@ -164,18 +192,18 @@ amber = (function() {
 
 	function loadDependencies() {
 		if (typeof jQuery == 'undefined') {
-			writeScriptTag(buildJSURL('lib/jQuery/jquery-1.8.2.min.js'));
+			writeScriptTag(buildJSURL('js/lib/jQuery/jquery-1.8.2.min.js'));
 		}
 
 		if ((typeof jQuery == 'undefined') || (typeof jQuery.ui == 'undefined')) {      
-			writeScriptTag(buildJSURL('lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
+			writeScriptTag(buildJSURL('js/lib/jQuery/jquery-ui-1.8.16.custom.min.js'));
 		}
 	};
 
 	function loadIDEDependencies() {
-		addJSToLoad('lib/jQuery/jquery.textarea.js');
-		addJSToLoad('lib/CodeMirror/codemirror.js');
-		addJSToLoad('lib/CodeMirror/smalltalk.js');
+		addJSToLoad('js/lib/jQuery/jquery.textarea.js');
+		addJSToLoad('js/lib/CodeMirror/codemirror.js');
+		addJSToLoad('js/lib/CodeMirror/smalltalk.js');
 		loadCSS('lib/CodeMirror/codemirror.css', 'js');
 		loadCSS('lib/CodeMirror/amber.css', 'js');
 	};
@@ -183,14 +211,14 @@ amber = (function() {
 	// This will be called after JS files have been loaded
 	function initializeSmalltalk(commitPath) {
 		window.smalltalkReady = function() {
-            if (commitPath) {
-                smalltalk['@@commitPath'] = commitPath;
-                smalltalk.Package._commitPathsFromLoader();
-            }
+			if (commitPath) {
+				smalltalk['@@commitPath'] = commitPath;
+				smalltalk.Package._commitPathsFromLoader();
+			}
 			if (spec.ready) {
 				spec.ready();
 			};
-            evaluateSmalltalkScripts();
+			evaluateSmalltalkScripts();
 		};
 
 		loadAllJS(); 
@@ -237,16 +265,16 @@ amber = (function() {
 		document.write(scriptString);
 	};
 
-    function evaluateSmalltalkScripts() {
-        jQuery(document).ready(function() {
-            jQuery('script[type="text/smalltalk"]').each(function(i, elt) {
-                smalltalk.send(
-                    smalltalk.send(smalltalk.Compiler, '_new'),
-                    '_evaluateExpression_',
-                    [jQuery(elt).html()])
-            });
-        })
-    };
+	function evaluateSmalltalkScripts() {
+		jQuery(document).ready(function() {
+			jQuery('script[type="text/smalltalk"]').each(function(i, elt) {
+				smalltalk.send(
+					smalltalk.send(smalltalk.Compiler, '_new'),
+					'_evaluateExpression_',
+					[jQuery(elt).html()])
+			});
+		})
+	};
 
 	function populateLocalPackages(){
 		var localStorageRE = /^smalltalk\.packages\.(.*)$/;

+ 1 - 1
st/Kernel-Objects.st

@@ -80,7 +80,7 @@ size
 !
 
 value
-	^ self
+	<return self.valueOf()>
 !
 
 yourself