소스 검색

kernel: {add,remove}Element: move from Array.prototype to API.

Herbert Vojčík 7 년 전
부모
커밋
d0a0529e0a
4개의 변경된 파일31개의 추가작업 그리고 20개의 파일을 삭제
  1. 5 0
      API-CHANGES.txt
  2. 4 4
      src/Kernel-Infrastructure.js
  3. 2 2
      src/Kernel-Infrastructure.st
  4. 20 14
      support/boot.js

+ 5 - 0
API-CHANGES.txt

@@ -1,7 +1,12 @@
 0.18.3:
 
+* Move {add,remove}Element from Array.prototype to kernel API.
+
 + Collection >>
   + copyWithout:
++ amber/boot api >>
+  + addElement
+  + removeElement
 
 
 0.18.2:

+ 4 - 4
src/Kernel-Infrastructure.js

@@ -544,7 +544,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-self.elements.addElement(anObject);
+$core.addElement(self.elements, anObject);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"addElement:",{anObject:anObject},$globals.Organizer)});
@@ -552,7 +552,7 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anObject"],
-source: "addElement: anObject\x0a\x09<inlineJS: 'self.elements.addElement(anObject)'>",
+source: "addElement: anObject\x0a\x09<inlineJS: '$core.addElement(self.elements, anObject)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []
@@ -591,7 +591,7 @@ var self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-self.elements.removeElement(anObject);
+$core.removeElement(self.elements, anObject);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"removeElement:",{anObject:anObject},$globals.Organizer)});
@@ -599,7 +599,7 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["anObject"],
-source: "removeElement: anObject\x0a\x09<inlineJS: 'self.elements.removeElement(anObject)'>",
+source: "removeElement: anObject\x0a\x09<inlineJS: '$core.removeElement(self.elements, anObject)'>",
 referencedClasses: [],
 //>>excludeEnd("ide");
 messageSends: []

+ 2 - 2
src/Kernel-Infrastructure.st

@@ -184,7 +184,7 @@ Use `#addElement:` and `#removeElement:` to manipulate instances.!
 !Organizer methodsFor: 'accessing'!
 
 addElement: anObject
-	<inlineJS: 'self.elements.addElement(anObject)'>
+	<inlineJS: '$core.addElement(self.elements, anObject)'>
 !
 
 elements
@@ -192,7 +192,7 @@ elements
 !
 
 removeElement: anObject
-	<inlineJS: 'self.elements.removeElement(anObject)'>
+	<inlineJS: '$core.removeElement(self.elements, anObject)'>
 ! !
 
 Organizer subclass: #ClassOrganizer

+ 20 - 14
support/boot.js

@@ -96,6 +96,8 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
     OrganizeBrik.deps = ["augments", "root"];
     function OrganizeBrik (brikz, st) {
         var SmalltalkObject = brikz.root.Object;
+        var addElement = brikz.augments.addElement;
+        var removeElement = brikz.augments.removeElement;
 
         function SmalltalkOrganizer () {
         }
@@ -132,11 +134,11 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         };
 
         this.addOrganizationElement = function (owner, element) {
-            owner.organization.elements.addElement(element);
+            addElement(owner.organization.elements, element);
         };
 
         this.removeOrganizationElement = function (owner, element) {
-            owner.organization.elements.removeElement(element);
+            removeElement(owner.organization.elements, element);
         };
     }
 
@@ -213,13 +215,15 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         };
     }
 
-    BehaviorsBrik.deps = ["organize", "root", "smalltalkGlobals"];
+    BehaviorsBrik.deps = ["organize", "root", "smalltalkGlobals", "augments"];
     function BehaviorsBrik (brikz, st) {
         var setupClassOrganization = brikz.organize.setupClassOrganization;
         var addOrganizationElement = brikz.organize.addOrganizationElement;
         var removeOrganizationElement = brikz.organize.removeOrganizationElement;
         var globals = brikz.smalltalkGlobals.globals;
         var SmalltalkObject = brikz.root.Object;
+        var addElement = brikz.augments.addElement;
+        var removeElement = brikz.augments.removeElement;
 
         function SmalltalkBehaviorBody () {
         }
@@ -272,7 +276,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
 
         function addBehaviorBody (behaviorBody) {
             globals[behaviorBody.className] = behaviorBody;
-            classes.addElement(behaviorBody);
+            addElement(classes, behaviorBody);
             addOrganizationElement(behaviorBody.pkg, behaviorBody);
             behaviorBody.added();
         }
@@ -280,7 +284,7 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         function removeBehaviorBody (behaviorBody) {
             behaviorBody.removed();
             removeOrganizationElement(behaviorBody.pkg, behaviorBody);
-            classes.removeElement(behaviorBody);
+            removeElement(classes, behaviorBody);
             delete globals[behaviorBody.className];
         }
 
@@ -435,13 +439,15 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
         };
     }
 
-    ClassesBrik.deps = ["root", "behaviors"];
+    ClassesBrik.deps = ["root", "behaviors", "augments"];
     function ClassesBrik (brikz, st) {
         var SmalltalkRoot = brikz.root.Root;
         var SmalltalkBehaviorBody = brikz.behaviors.BehaviorBody;
         var buildBehaviorBody = brikz.behaviors.buildBehaviorBody;
         var setupBehavior = brikz.behaviors.setupBehavior;
         var removeBehaviorBody = brikz.behaviors.removeBehaviorBody;
+        var addElement = brikz.augments.addElement;
+        var removeElement = brikz.augments.removeElement;
 
         function SmalltalkBehavior () {
         }
@@ -599,13 +605,13 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
 
         function addSubclass (klass) {
             if (klass.superclass) {
-                klass.superclass.subclasses.addElement(klass);
+                addElement(klass.superclass.subclasses, klass);
             }
         }
 
         function removeSubclass (klass) {
             if (klass.superclass) {
-                klass.superclass.subclasses.removeElement(klass);
+                removeElement(klass.superclass.subclasses, klass);
             }
         }
 
@@ -642,19 +648,19 @@ define(['require', './brikz', './compatibility'], function (require, Brikz) {
     function AugmentsBrik (brikz, st) {
         /* Array extensions */
 
-        Array.prototype.addElement = function (el) {
+        st.addElement = this.addElement = function (array, el) {
             if (typeof el === 'undefined') {
                 return;
             }
-            if (this.indexOf(el) == -1) {
-                this.push(el);
+            if (array.indexOf(el) === -1) {
+                array.push(el);
             }
         };
 
-        Array.prototype.removeElement = function (el) {
-            var i = this.indexOf(el);
+        st.removeElement = this.removeElement = function (array, el) {
+            var i = array.indexOf(el);
             if (i !== -1) {
-                this.splice(i, 1);
+                array.splice(i, 1);
             }
         };
     }