1
0
فهرست منبع

Using SmalltalkSettings object

It is set up in .initialize.
It is used to find default namespace in SmalltalkImage.
Herbert Vojčík 10 سال پیش
والد
کامیت
5e391bcd68
6فایلهای تغییر یافته به همراه24 افزوده شده و 17 حذف شده
  1. 1 1
      cli/index.html
  2. 1 1
      helios.html
  3. 1 1
      index.html
  4. 10 8
      js/Kernel-Infrastructure.js
  5. 2 2
      st/Kernel-Infrastructure.st
  6. 9 4
      support/helpers.js

+ 1 - 1
cli/index.html

@@ -22,7 +22,7 @@
         ["amber/devel",
             "amber_cli/AmberCli" ],
         function (smalltalk) {
-            smalltalk.initialize({defaultAmdNamespace: 'amber_cli'});
+            smalltalk.initialize({'vm.defaultAmdNamespace': 'amber_cli'});
             smalltalk.globals.Browser._openOn_(smalltalk.AmberCli);
         }
     );

+ 1 - 1
helios.html

@@ -20,7 +20,7 @@
                           return 'Do you want to close Amber? All uncommitted changes will be lost.';
                       };
 
-                      smalltalk.initialize({defaultAmdNamespace: "amber_core"});
+                      smalltalk.initialize({'vm.defaultAmdNamespace': "amber_core"});
 					  smalltalk.globals.HLManager._setup();
                   }
           );

+ 1 - 1
index.html

@@ -14,7 +14,7 @@
     require(
         ["amber/devel"],
         function (smalltalk) {
-            smalltalk.initialize({defaultAmdNamespace: "amber_core"});
+            smalltalk.initialize({'vm.defaultAmdNamespace': "amber_core"});
 
             smalltalk.globals.Browser._open();
         }

+ 10 - 8
js/Kernel-Infrastructure.js

@@ -2543,15 +2543,16 @@ selector: "defaultAmdNamespace",
 protocol: 'accessing amd',
 fn: function (){
 var self=this;
+function $SmalltalkSettings(){return globals.SmalltalkSettings||(typeof SmalltalkSettings=="undefined"?nil:SmalltalkSettings)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=_st(self._vm())._defaultAmdNamespace();
+$1=_st($SmalltalkSettings())._at_("vm.defaultAmdNamespace");
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace",{},globals.SmalltalkImage)})},
 args: [],
-source: "defaultAmdNamespace\x0a\x09^ self vm defaultAmdNamespace",
-messageSends: ["defaultAmdNamespace", "vm"],
-referencedClasses: []
+source: "defaultAmdNamespace\x0a\x09^ SmalltalkSettings at: 'vm.defaultAmdNamespace'",
+messageSends: ["at:"],
+referencedClasses: ["SmalltalkSettings"]
 }),
 globals.SmalltalkImage);
 
@@ -2561,13 +2562,14 @@ selector: "defaultAmdNamespace:",
 protocol: 'accessing amd',
 fn: function (aString){
 var self=this;
+function $SmalltalkSettings(){return globals.SmalltalkSettings||(typeof SmalltalkSettings=="undefined"?nil:SmalltalkSettings)}
 return smalltalk.withContext(function($ctx1) { 
-_st(self._vm())._defaultAmdNamespace_(aString);
+_st($SmalltalkSettings())._at_put_("vm.defaultAmdNamespace",aString);
 return self}, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace:",{aString:aString},globals.SmalltalkImage)})},
 args: ["aString"],
-source: "defaultAmdNamespace: aString\x0a\x09self vm defaultAmdNamespace: aString",
-messageSends: ["defaultAmdNamespace:", "vm"],
-referencedClasses: []
+source: "defaultAmdNamespace: aString\x0a\x09SmalltalkSettings at: 'vm.defaultAmdNamespace' put: aString",
+messageSends: ["at:put:"],
+referencedClasses: ["SmalltalkSettings"]
 }),
 globals.SmalltalkImage);
 

+ 2 - 2
st/Kernel-Infrastructure.st

@@ -1003,11 +1003,11 @@ amdRequire
 !
 
 defaultAmdNamespace
-	^ self vm defaultAmdNamespace
+	^ SmalltalkSettings at: 'vm.defaultAmdNamespace'
 !
 
 defaultAmdNamespace: aString
-	self vm defaultAmdNamespace: aString
+	SmalltalkSettings at: 'vm.defaultAmdNamespace' put: aString
 ! !
 
 !SmalltalkImage methodsFor: 'classes'!

+ 9 - 4
support/helpers.js

@@ -15,13 +15,18 @@ define("amber/helpers", ["amber_vm/smalltalk", "amber_vm/globals", "require"], f
         enumerable: true, configurable: true, writable: false
     });
     exports.initialize = function (options) {
-        options = options || {};
+        var settings = globals.SmalltalkSettings || {};
+        settings['vm.defaultAmdNamespace'] = vm.defaultAmdNamespace;
+        // TODO load saved contents from localStorage
         if (exports.defaultAmdNamespace) {
-            console.warn("`smalltalk.defaultAmdNamespace = 'namespace';` is deprecated. Please use `smalltalk.initialize({defaultAmdNamespace: 'namespace'});` instead.");
-            options.defaultAmdNamespace = options.defaultAmdNamespace || exports.defaultAmdNamespace;
+            console.warn("`smalltalk.defaultAmdNamespace = 'namespace';` is deprecated. Please use `smalltalk.initialize({'vm.defaultAmdNamespace': 'namespace'});` instead.");
+            settings['vm.defaultAmdNamespace'] = settings['vm.defaultAmdNamespace'] || exports.defaultAmdNamespace;
         }
-        vm.defaultAmdNamespace = options.defaultAmdNamespace || vm.defaultAmdNamespace;
+        Object.keys(options).forEach(function (key) {
+            settings[key] = options[key];
+        });
         console.warn("smalltalk.ClassName is deprecated. Please  use smalltalk.globals.ClassName instead.");
+        globals.SmalltalkSettings = settings;
         return vm.initialize();
     };