Browse Source

Goodies contain extend.

Herby Vojčík 4 years ago
parent
commit
756a3461a7
3 changed files with 14 additions and 14 deletions
  1. 4 10
      lang/base/helpers.js
  2. 8 0
      lang/base/kernel-goodies.js
  3. 2 4
      lang/base/kernel-language.js

+ 4 - 10
lang/base/helpers.js

@@ -1,6 +1,7 @@
-define(["amber/boot", "require"], function (boot, require) {
+define(["./boot", "./kernel-goodies", "require"], function (boot, $goodies, require) {
     var globals = boot.globals,
         exports = {},
+        extend = $goodies.extend,
         api = boot.api;
 
     // API
@@ -29,13 +30,6 @@ define(["amber/boot", "require"], function (boot, require) {
         enumerable: true, configurable: true, writable: false
     });
 
-    function mixinToSettings (source) {
-        var settings = globals.SmalltalkSettings;
-        Object.keys(source).forEach(function (key) {
-            settings[key] = source[key];
-        });
-    }
-
     function settingsInLocalStorage () {
         //jshint evil:true
         var storage = 'localStorage' in global && global.localStorage;
@@ -47,7 +41,7 @@ define(["amber/boot", "require"], function (boot, require) {
             } catch (ex) {
                 // pass
             }
-            mixinToSettings(fromStorage || {});
+            extend(globals.SmalltalkSettings, fromStorage || {});
             if (typeof window !== "undefined") {
                 window.addEventListener('beforeunload', function () {
                     storage.setItem('amber.SmalltalkSettings', JSON.stringify(globals.SmalltalkSettings));
@@ -61,7 +55,7 @@ define(["amber/boot", "require"], function (boot, require) {
             globals.SmalltalkSettings['transport.defaultAmdNamespace'] = "amber/core";
             api.amdRequire = require; // TODO better
             settingsInLocalStorage();
-            mixinToSettings(options || {});
+            extend(globals.SmalltalkSettings, options || {});
             resolve(api.initialize());
         });
     };

+ 8 - 0
lang/base/kernel-goodies.js

@@ -96,7 +96,15 @@ define(function () {
         }
     }
 
+    function extend (target, source) {
+        Object.keys(source).forEach(function (key) {
+            target[key] = source[key];
+        });
+        return target;
+    }
+
     return {
+        extend: extend,
         removeElement: removeElement,
         addElement: addElement,
         js2st: js2st,

+ 2 - 4
lang/base/kernel-language.js

@@ -7,6 +7,7 @@ define(['./kernel-goodies'], function ($goodies) {
     var declareJsMethod = $goodies.declareJsMethod;
     var addElement = $goodies.addElement;
     var removeElement = $goodies.removeElement;
+    var extend = $goodies.extend;
 
     MethodCompositionBrik.deps = ["methods"];
 
@@ -59,10 +60,7 @@ define(['./kernel-goodies'], function ($goodies) {
         st.setTraitComposition = function (traitComposition, traitOrBehavior) {
             var oldLocalMethods = traitOrBehavior.localMethods,
                 newLocalMethods = Object.create(buildCompositionChain(traitComposition));
-            Object.keys(oldLocalMethods).forEach(function (selector) {
-                newLocalMethods[selector] = oldLocalMethods[selector];
-            });
-            traitOrBehavior.localMethods = newLocalMethods;
+            traitOrBehavior.localMethods = extend(newLocalMethods, oldLocalMethods);
             var selector;
             for (selector in newLocalMethods) {
                 updateMethod(selector, traitOrBehavior);