Jelajahi Sumber

first shot on customizing commit path per package

Laurent Laffont 12 tahun lalu
induk
melakukan
82b75c3e03
10 mengubah file dengan 690 tambahan dan 14 penghapusan
  1. 0 0
      js/IDE.deploy.js
  2. 0 0
      js/IDE.js
  3. 142 0
      js/Kernel-Tests.deploy.js
  4. 202 0
      js/Kernel-Tests.js
  5. 91 2
      js/Kernel.deploy.js
  6. 134 5
      js/Kernel.js
  7. 0 0
      js/SUnit.js
  8. 5 4
      st/IDE.st
  9. 79 0
      st/Kernel-Tests.st
  10. 37 3
      st/Kernel.st

File diff ditekan karena terlalu besar
+ 0 - 0
js/IDE.deploy.js


File diff ditekan karena terlalu besar
+ 0 - 0
js/IDE.js


+ 142 - 0
js/Kernel-Tests.deploy.js

@@ -355,3 +355,145 @@ smalltalk.JSObjectProxyTest);
 
 
 
+smalltalk.addClass('PackageTest', smalltalk.TestCase, ['zorkPackage', 'grulPackage'], 'Kernel-Tests');
+smalltalk.addMethod(
+'_setUp',
+smalltalk.method({
+selector: 'setUp',
+fn: function (){
+var self=this;
+self['@zorkPackage']=smalltalk.send(smalltalk.send((smalltalk.Package || Package), "_new", []), "_name_", ["Zork"]);
+self['@grulPackage']=(function($rec){smalltalk.send($rec, "_name_", ["Grul"]);smalltalk.send($rec, "_commitPathJs_", [unescape("server/grul/js")]);smalltalk.send($rec, "_commitPathSt_", [unescape("grul/st")]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Package || Package), "_new", []));
+return self;}
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+'_testGrulCommitPathStShouldBeGrulSt',
+smalltalk.method({
+selector: 'testGrulCommitPathStShouldBeGrulSt',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("grul/st"), smalltalk.send(self['@grulPackage'], "_commitPathSt", [])]);
+return self;}
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+'_testZorkCommitPathStShouldBeSt',
+smalltalk.method({
+selector: 'testZorkCommitPathStShouldBeSt',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", ["st", smalltalk.send(self['@zorkPackage'], "_commitPathSt", [])]);
+return self;}
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+'_testZorkCommitPathJsShouldBeJs',
+smalltalk.method({
+selector: 'testZorkCommitPathJsShouldBeJs',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", ["js", smalltalk.send(self['@zorkPackage'], "_commitPathJs", [])]);
+return self;}
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+'_testGrulCommitPathJsShouldBeServerGrulJs',
+smalltalk.method({
+selector: 'testGrulCommitPathJsShouldBeServerGrulJs',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("server/grul/js"), smalltalk.send(self['@grulPackage'], "_commitPathJs", [])]);
+return self;}
+}),
+smalltalk.PackageTest);
+
+
+
+smalltalk.addClass('PackageWithDefaultCommitPathChangedTest', smalltalk.PackageTest, ['backUpCommitPathJs', 'backUpCommitPathSt'], 'Kernel-Tests');
+smalltalk.addMethod(
+'_setUp',
+smalltalk.method({
+selector: 'setUp',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_setUp", [], smalltalk.PackageTest);
+self['@backUpCommitPathJs']=smalltalk.send((smalltalk.Package || Package), "_defaultCommitPathJs", []);
+self['@backUpCommitPathSt']=smalltalk.send((smalltalk.Package || Package), "_defaultCommitPathSt", []);
+(function($rec){smalltalk.send($rec, "_defaultCommitPathJs_", [unescape("javascripts/")]);return smalltalk.send($rec, "_defaultCommitPathSt_", [unescape("smalltalk/")]);})((smalltalk.Package || Package));
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+'_tearDown',
+smalltalk.method({
+selector: 'tearDown',
+fn: function (){
+var self=this;
+(function($rec){smalltalk.send($rec, "_defaultCommitPathJs_", [self['@backUpCommitPathJs']]);return smalltalk.send($rec, "_defaultCommitPathSt_", [self['@backUpCommitPathSt']]);})((smalltalk.Package || Package));
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+'_testGrulCommitPathJsShouldBeServerGrulJs',
+smalltalk.method({
+selector: 'testGrulCommitPathJsShouldBeServerGrulJs',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("server/grul/js"), smalltalk.send(self['@grulPackage'], "_commitPathJs", [])]);
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+'_testGrulCommitPathStShouldBeGrulSt',
+smalltalk.method({
+selector: 'testGrulCommitPathStShouldBeGrulSt',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("grul/st"), smalltalk.send(self['@grulPackage'], "_commitPathSt", [])]);
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+'_testZorkCommitPathJsShouldBeJavascript',
+smalltalk.method({
+selector: 'testZorkCommitPathJsShouldBeJavascript',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("javascripts/"), smalltalk.send(self['@zorkPackage'], "_commitPathJs", [])]);
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+'_testZorkCommitPathStShouldBeSmalltalk',
+smalltalk.method({
+selector: 'testZorkCommitPathStShouldBeSmalltalk',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("smalltalk/"), smalltalk.send(self['@zorkPackage'], "_commitPathSt", [])]);
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+
+smalltalk.addMethod(
+'_shouldInheritSelectors',
+smalltalk.method({
+selector: 'shouldInheritSelectors',
+fn: function (){
+var self=this;
+return false;
+return self;}
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest.klass);
+
+

+ 202 - 0
js/Kernel-Tests.js

@@ -470,3 +470,205 @@ smalltalk.JSObjectProxyTest);
 
 
 
+smalltalk.addClass('PackageTest', smalltalk.TestCase, ['zorkPackage', 'grulPackage'], 'Kernel-Tests');
+smalltalk.addMethod(
+unescape('_setUp'),
+smalltalk.method({
+selector: unescape('setUp'),
+category: 'running',
+fn: function (){
+var self=this;
+self['@zorkPackage']=smalltalk.send(smalltalk.send((smalltalk.Package || Package), "_new", []), "_name_", ["Zork"]);
+self['@grulPackage']=(function($rec){smalltalk.send($rec, "_name_", ["Grul"]);smalltalk.send($rec, "_commitPathJs_", [unescape("server/grul/js")]);smalltalk.send($rec, "_commitPathSt_", [unescape("grul/st")]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Package || Package), "_new", []));
+return self;},
+args: [],
+source: unescape('setUp%0A%09zorkPackage%20%3A%3D%20Package%20new%20name%3A%20%27Zork%27.%0A%09grulPackage%20%3A%3D%20Package%20new%20%0A%09%09%09%09%09name%3A%20%27Grul%27%3B%0A%09%09%09%09%09commitPathJs%3A%20%27server/grul/js%27%3B%0A%09%09%09%09%09commitPathSt%3A%20%27grul/st%27%3B%0A%09%09%09%09%09yourself'),
+messageSends: ["name:", "new", "commitPathJs:", "commitPathSt:", "yourself"],
+referencedClasses: [smalltalk.Package]
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+unescape('_testGrulCommitPathStShouldBeGrulSt'),
+smalltalk.method({
+selector: unescape('testGrulCommitPathStShouldBeGrulSt'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("grul/st"), smalltalk.send(self['@grulPackage'], "_commitPathSt", [])]);
+return self;},
+args: [],
+source: unescape('testGrulCommitPathStShouldBeGrulSt%0A%09self%20assert%3A%20%27grul/st%27%20equals%3A%20grulPackage%20commitPathSt'),
+messageSends: ["assert:equals:", "commitPathSt"],
+referencedClasses: []
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+unescape('_testZorkCommitPathStShouldBeSt'),
+smalltalk.method({
+selector: unescape('testZorkCommitPathStShouldBeSt'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", ["st", smalltalk.send(self['@zorkPackage'], "_commitPathSt", [])]);
+return self;},
+args: [],
+source: unescape('testZorkCommitPathStShouldBeSt%0A%09self%20assert%3A%20%27st%27%20equals%3A%20zorkPackage%20commitPathSt'),
+messageSends: ["assert:equals:", "commitPathSt"],
+referencedClasses: []
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+unescape('_testZorkCommitPathJsShouldBeJs'),
+smalltalk.method({
+selector: unescape('testZorkCommitPathJsShouldBeJs'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", ["js", smalltalk.send(self['@zorkPackage'], "_commitPathJs", [])]);
+return self;},
+args: [],
+source: unescape('testZorkCommitPathJsShouldBeJs%0A%09self%20assert%3A%20%27js%27%20equals%3A%20zorkPackage%20commitPathJs'),
+messageSends: ["assert:equals:", "commitPathJs"],
+referencedClasses: []
+}),
+smalltalk.PackageTest);
+
+smalltalk.addMethod(
+unescape('_testGrulCommitPathJsShouldBeServerGrulJs'),
+smalltalk.method({
+selector: unescape('testGrulCommitPathJsShouldBeServerGrulJs'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("server/grul/js"), smalltalk.send(self['@grulPackage'], "_commitPathJs", [])]);
+return self;},
+args: [],
+source: unescape('testGrulCommitPathJsShouldBeServerGrulJs%0A%09self%20assert%3A%20%27server/grul/js%27%20equals%3A%20grulPackage%20commitPathJs'),
+messageSends: ["assert:equals:", "commitPathJs"],
+referencedClasses: []
+}),
+smalltalk.PackageTest);
+
+
+
+smalltalk.addClass('PackageWithDefaultCommitPathChangedTest', smalltalk.PackageTest, ['backUpCommitPathJs', 'backUpCommitPathSt'], 'Kernel-Tests');
+smalltalk.addMethod(
+unescape('_setUp'),
+smalltalk.method({
+selector: unescape('setUp'),
+category: 'running',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_setUp", [], smalltalk.PackageTest);
+self['@backUpCommitPathJs']=smalltalk.send((smalltalk.Package || Package), "_defaultCommitPathJs", []);
+self['@backUpCommitPathSt']=smalltalk.send((smalltalk.Package || Package), "_defaultCommitPathSt", []);
+(function($rec){smalltalk.send($rec, "_defaultCommitPathJs_", [unescape("javascripts/")]);return smalltalk.send($rec, "_defaultCommitPathSt_", [unescape("smalltalk/")]);})((smalltalk.Package || Package));
+return self;},
+args: [],
+source: unescape('setUp%0A%09super%20setUp.%0A%09backUpCommitPathJs%20%3A%3D%20Package%20defaultCommitPathJs.%0A%09backUpCommitPathSt%20%3A%3D%20Package%20defaultCommitPathSt.%0A%0A%09Package%0A%09%09defaultCommitPathJs%3A%20%27javascripts/%27%3B%0A%09%09defaultCommitPathSt%3A%20%27smalltalk/%27.'),
+messageSends: ["setUp", "defaultCommitPathJs", "defaultCommitPathSt", "defaultCommitPathJs:", "defaultCommitPathSt:"],
+referencedClasses: [smalltalk.Package]
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+unescape('_tearDown'),
+smalltalk.method({
+selector: unescape('tearDown'),
+category: 'running',
+fn: function (){
+var self=this;
+(function($rec){smalltalk.send($rec, "_defaultCommitPathJs_", [self['@backUpCommitPathJs']]);return smalltalk.send($rec, "_defaultCommitPathSt_", [self['@backUpCommitPathSt']]);})((smalltalk.Package || Package));
+return self;},
+args: [],
+source: unescape('tearDown%0A%09%20Package%20%0A%09%09defaultCommitPathJs%3A%20backUpCommitPathJs%3B%0A%09%09defaultCommitPathSt%3A%20backUpCommitPathSt'),
+messageSends: ["defaultCommitPathJs:", "defaultCommitPathSt:"],
+referencedClasses: [smalltalk.Package]
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+unescape('_testGrulCommitPathJsShouldBeServerGrulJs'),
+smalltalk.method({
+selector: unescape('testGrulCommitPathJsShouldBeServerGrulJs'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("server/grul/js"), smalltalk.send(self['@grulPackage'], "_commitPathJs", [])]);
+return self;},
+args: [],
+source: unescape('testGrulCommitPathJsShouldBeServerGrulJs%0A%09self%20assert%3A%20%27server/grul/js%27%20equals%3A%20grulPackage%20commitPathJs'),
+messageSends: ["assert:equals:", "commitPathJs"],
+referencedClasses: []
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+unescape('_testGrulCommitPathStShouldBeGrulSt'),
+smalltalk.method({
+selector: unescape('testGrulCommitPathStShouldBeGrulSt'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("grul/st"), smalltalk.send(self['@grulPackage'], "_commitPathSt", [])]);
+return self;},
+args: [],
+source: unescape('testGrulCommitPathStShouldBeGrulSt%0A%09self%20assert%3A%20%27grul/st%27%20equals%3A%20grulPackage%20commitPathSt'),
+messageSends: ["assert:equals:", "commitPathSt"],
+referencedClasses: []
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+unescape('_testZorkCommitPathJsShouldBeJavascript'),
+smalltalk.method({
+selector: unescape('testZorkCommitPathJsShouldBeJavascript'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("javascripts/"), smalltalk.send(self['@zorkPackage'], "_commitPathJs", [])]);
+return self;},
+args: [],
+source: unescape('testZorkCommitPathJsShouldBeJavascript%0A%09self%20assert%3A%20%27javascripts/%27%20equals%3A%20zorkPackage%20commitPathJs'),
+messageSends: ["assert:equals:", "commitPathJs"],
+referencedClasses: []
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+smalltalk.addMethod(
+unescape('_testZorkCommitPathStShouldBeSmalltalk'),
+smalltalk.method({
+selector: unescape('testZorkCommitPathStShouldBeSmalltalk'),
+category: 'tests',
+fn: function (){
+var self=this;
+smalltalk.send(self, "_assert_equals_", [unescape("smalltalk/"), smalltalk.send(self['@zorkPackage'], "_commitPathSt", [])]);
+return self;},
+args: [],
+source: unescape('testZorkCommitPathStShouldBeSmalltalk%0A%09self%20assert%3A%20%27smalltalk/%27%20equals%3A%20zorkPackage%20commitPathSt'),
+messageSends: ["assert:equals:", "commitPathSt"],
+referencedClasses: []
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest);
+
+
+smalltalk.addMethod(
+unescape('_shouldInheritSelectors'),
+smalltalk.method({
+selector: unescape('shouldInheritSelectors'),
+category: 'accessing',
+fn: function (){
+var self=this;
+return false;
+return self;},
+args: [],
+source: unescape('shouldInheritSelectors%0A%09%5E%20false'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.PackageWithDefaultCommitPathChangedTest.klass);
+
+

+ 91 - 2
js/Kernel.deploy.js

@@ -779,7 +779,7 @@ return self;}
 smalltalk.Smalltalk.klass);
 
 
-smalltalk.addClass('Package', smalltalk.Object, [], 'Kernel');
+smalltalk.addClass('Package', smalltalk.Object, ['commitPathJs', 'commitPathSt'], 'Kernel');
 smalltalk.addMethod(
 '_name',
 smalltalk.method({
@@ -808,7 +808,7 @@ smalltalk.method({
 selector: 'name:',
 fn: function (aString){
 var self=this;
-return self.pkgName = aString;
+self.pkgName = aString;
 return self;}
 }),
 smalltalk.Package);
@@ -835,7 +835,52 @@ return self;}
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+'_commitPathJs',
+smalltalk.method({
+selector: 'commitPathJs',
+fn: function (){
+var self=this;
+return self['@commitPathJs']=smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathJs", []);
+return self;}
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+'_commitPathSt',
+smalltalk.method({
+selector: 'commitPathSt',
+fn: function (){
+var self=this;
+return self['@commitPathSt']=smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathSt", []);
+return self;}
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+'_commitPathJs_',
+smalltalk.method({
+selector: 'commitPathJs:',
+fn: function (aString){
+var self=this;
+self['@commitPathJs']=aString;
+return self;}
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+'_commitPathSt_',
+smalltalk.method({
+selector: 'commitPathSt:',
+fn: function (aString){
+var self=this;
+self['@commitPathSt']=aString;
+return self;}
+}),
+smalltalk.Package);
+
 
+smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
 '_named_',
 smalltalk.method({
@@ -858,6 +903,50 @@ return self;}
 }),
 smalltalk.Package.klass);
 
+smalltalk.addMethod(
+'_defaultCommitPathSt',
+smalltalk.method({
+selector: 'defaultCommitPathSt',
+fn: function (){
+var self=this;
+return (($receiver = self['@defaultCommitPathSt']) == nil || $receiver == undefined) ? (function(){return self['@defaultCommitPathSt']="st";})() : $receiver;
+return self;}
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+'_defaultCommitPathJs',
+smalltalk.method({
+selector: 'defaultCommitPathJs',
+fn: function (){
+var self=this;
+return (($receiver = self['@defaultCommitPathJs']) == nil || $receiver == undefined) ? (function(){return self['@defaultCommitPathJs']="js";})() : $receiver;
+return self;}
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+'_defaultCommitPathSt_',
+smalltalk.method({
+selector: 'defaultCommitPathSt:',
+fn: function (aString){
+var self=this;
+self['@defaultCommitPathSt']=aString;
+return self;}
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+'_defaultCommitPathJs_',
+smalltalk.method({
+selector: 'defaultCommitPathJs:',
+fn: function (aString){
+var self=this;
+self['@defaultCommitPathJs']=aString;
+return self;}
+}),
+smalltalk.Package.klass);
+
 
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addMethod(

+ 134 - 5
js/Kernel.js

@@ -1109,7 +1109,7 @@ referencedClasses: []
 smalltalk.Smalltalk.klass);
 
 
-smalltalk.addClass('Package', smalltalk.Object, [], 'Kernel');
+smalltalk.addClass('Package', smalltalk.Object, ['commitPathJs', 'commitPathSt'], 'Kernel');
 smalltalk.Package.comment=unescape('A%20Package%20is%20similar%20to%20a%20%22class%20category%22%20typically%20found%20in%20other%20Smalltalks%20like%20Pharo%20or%20Squeak.%20Amber%20does%20not%20have%20class%20categories%20anymore%2C%20it%20had%20in%20the%20beginning%20but%20now%20each%20class%20in%20the%20system%20knows%20which%20package%20it%20belongs%20to.%0A%0AA%20Package%20has%20a%20name%2C%20an%20Array%20of%20%22requires%22%2C%20a%20comment%20and%20a%20Dictionary%20with%20other%20optional%20key%20value%20attributes.%20A%20Package%20can%20also%20be%20queried%20for%20its%20classes%2C%20but%20it%20will%20then%20resort%20to%20a%20reverse%20scan%20of%20all%20classes%20to%20find%20them.%0APackages%20are%20manipulated%20through%20%22Smalltalk%20current%22%2C%20like%20for%20example%20finding%20one%20based%20on%20a%20name%3A%0A%0A%09Smalltalk%20current%20packageAt%3A%20%27Kernel%27%0A%0A...but%20you%20can%20also%20use%3A%0A%0A%09Package%20named%3A%20%27Kernel%27%0A%0AA%20Package%20differs%20slightly%20from%20a%20Monticello%20package%20which%20can%20span%20multiple%20class%20categories%20using%20a%20naming%20convention%20based%20on%20hyphenation.%20But%20just%20as%20in%20Monticello%20a%20Package%20supports%20%22class%20extensions%22%20so%20a%20Package%0Acan%20define%20behaviors%20in%20foreign%20classes%20using%20a%20naming%20convention%20for%20method%20categories%20where%20the%20category%20starts%20with%20an%20asterisk%20and%20then%20the%20name%20of%20the%20owning%20package%20follows.%20This%20can%20easily%20be%20seen%20in%20for%20example%20class%0AString%20where%20the%20method%20category%20%22*IDE%22%20defines%20%23inspectOn%3A%20which%20thus%20is%20a%20method%20belonging%20to%20the%20IDE%20package.')
 smalltalk.addMethod(
 unescape('_name'),
@@ -1150,10 +1150,10 @@ selector: unescape('name%3A'),
 category: 'accessing',
 fn: function (aString){
 var self=this;
-return self.pkgName = aString;
+self.pkgName = aString;
 return self;},
 args: ["aString"],
-source: unescape('name%3A%20aString%0A%09%3Creturn%20self.pkgName%20%3D%20aString%3E'),
+source: unescape('name%3A%20aString%0A%09%3Cself.pkgName%20%3D%20aString%3E'),
 messageSends: [],
 referencedClasses: []
 }),
@@ -1191,12 +1191,77 @@ referencedClasses: []
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+unescape('_commitPathJs'),
+smalltalk.method({
+selector: unescape('commitPathJs'),
+category: 'accessing',
+fn: function (){
+var self=this;
+return self['@commitPathJs']=smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathJs", []);
+return self;},
+args: [],
+source: unescape('commitPathJs%0A%09%5E%20commitPathJs%20%3A%3D%20self%20class%20defaultCommitPathJs'),
+messageSends: ["defaultCommitPathJs", "class"],
+referencedClasses: []
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+unescape('_commitPathSt'),
+smalltalk.method({
+selector: unescape('commitPathSt'),
+category: 'accessing',
+fn: function (){
+var self=this;
+return self['@commitPathSt']=smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathSt", []);
+return self;},
+args: [],
+source: unescape('commitPathSt%0A%09%5E%20commitPathSt%20%3A%3D%20self%20class%20defaultCommitPathSt'),
+messageSends: ["defaultCommitPathSt", "class"],
+referencedClasses: []
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+unescape('_commitPathJs_'),
+smalltalk.method({
+selector: unescape('commitPathJs%3A'),
+category: 'accessing',
+fn: function (aString){
+var self=this;
+self['@commitPathJs']=aString;
+return self;},
+args: ["aString"],
+source: unescape('commitPathJs%3A%20aString%0A%09commitPathJs%A0%3A%3D%20aString'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+unescape('_commitPathSt_'),
+smalltalk.method({
+selector: unescape('commitPathSt%3A'),
+category: 'accessing',
+fn: function (aString){
+var self=this;
+self['@commitPathSt']=aString;
+return self;},
+args: ["aString"],
+source: unescape('commitPathSt%3A%20aString%0A%09commitPathSt%A0%3A%3D%20aString'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package);
 
+
+smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
 unescape('_named_'),
 smalltalk.method({
 selector: unescape('named%3A'),
-category: 'not yet classified',
+category: 'accessing',
 fn: function (aPackageName){
 var self=this;
 return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packageAt_", [aPackageName]);
@@ -1212,7 +1277,7 @@ smalltalk.addMethod(
 unescape('_named_ifAbsent_'),
 smalltalk.method({
 selector: unescape('named%3AifAbsent%3A'),
-category: 'not yet classified',
+category: 'accessing',
 fn: function (aPackageName, aBlock){
 var self=this;
 return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packageAt_ifAbsent_", [aPackageName, aBlock]);
@@ -1224,6 +1289,70 @@ referencedClasses: [smalltalk.Smalltalk]
 }),
 smalltalk.Package.klass);
 
+smalltalk.addMethod(
+unescape('_defaultCommitPathSt'),
+smalltalk.method({
+selector: unescape('defaultCommitPathSt'),
+category: 'accessing',
+fn: function (){
+var self=this;
+return (($receiver = self['@defaultCommitPathSt']) == nil || $receiver == undefined) ? (function(){return self['@defaultCommitPathSt']="st";})() : $receiver;
+return self;},
+args: [],
+source: unescape('defaultCommitPathSt%0A%09%5E%20defaultCommitPathSt%20ifNil%3A%20%5B%20defaultCommitPathSt%20%3A%3D%20%27st%27%5D%20'),
+messageSends: ["ifNil:"],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+unescape('_defaultCommitPathJs'),
+smalltalk.method({
+selector: unescape('defaultCommitPathJs'),
+category: 'accessing',
+fn: function (){
+var self=this;
+return (($receiver = self['@defaultCommitPathJs']) == nil || $receiver == undefined) ? (function(){return self['@defaultCommitPathJs']="js";})() : $receiver;
+return self;},
+args: [],
+source: unescape('defaultCommitPathJs%0A%09%5E%20defaultCommitPathJs%20ifNil%3A%20%5B%20defaultCommitPathJs%20%3A%3D%20%27js%27%5D%20'),
+messageSends: ["ifNil:"],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+unescape('_defaultCommitPathSt_'),
+smalltalk.method({
+selector: unescape('defaultCommitPathSt%3A'),
+category: 'accessing',
+fn: function (aString){
+var self=this;
+self['@defaultCommitPathSt']=aString;
+return self;},
+args: ["aString"],
+source: unescape('defaultCommitPathSt%3A%20aString%0A%09defaultCommitPathSt%20%3A%3D%20aString'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
+smalltalk.addMethod(
+unescape('_defaultCommitPathJs_'),
+smalltalk.method({
+selector: unescape('defaultCommitPathJs%3A'),
+category: 'accessing',
+fn: function (aString){
+var self=this;
+self['@defaultCommitPathJs']=aString;
+return self;},
+args: ["aString"],
+source: unescape('defaultCommitPathJs%3A%20aString%0A%09defaultCommitPathJs%20%3A%3D%20aString'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
 
 smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
 smalltalk.addMethod(

+ 0 - 0
js/SUnit.js


+ 5 - 4
st/IDE.st

@@ -701,23 +701,24 @@ handleSourceAreaKeyDown: anEvent
 !
 
 commitPackage
-	selectedPackage ifNotNil: [
+	selectedPackage ifNotNil: [ |package|
+                package := Package named: selectedPackage.
 		jQuery 
-			ajax: self class commitPathJs, '/', selectedPackage, '.js'
+			ajax: package commitPathJs, '/', selectedPackage, '.js'
 			options: #{
 				'type' -> 'PUT'.
 				'data' -> (Exporter new exportPackage: selectedPackage).
 				'error' -> [window alert: 'Commit failed!!']
 			}.
 		jQuery 
-			ajax: self class commitPathJs, '/', selectedPackage, '.deploy.js'
+			ajax: package commitPathJs, '/', selectedPackage, '.deploy.js'
 			options: #{
 				'type' -> 'PUT'.
 				'data' -> (StrippedExporter new exportPackage: selectedPackage).
 				'error' -> [window alert: 'Commit failed!!']
 			}.
 		jQuery 
-			ajax: self class commitPathSt, '/', selectedPackage, '.st'
+			ajax: package commitPathSt, '/', selectedPackage, '.st'
 			options: #{
 				'type' -> 'PUT'.
 				'data' -> (ChunkExporter new exportPackage: selectedPackage).

+ 79 - 0
st/Kernel-Tests.st

@@ -278,3 +278,82 @@ testPropertyThatReturnsEmptyString
 	self assert: '#test' equals: document location hash.
 ! !
 
+TestCase subclass: #PackageTest
+	instanceVariableNames: 'zorkPackage grulPackage'
+	category: 'Kernel-Tests'!
+
+!PackageTest methodsFor: 'running'!
+
+setUp
+	zorkPackage := Package new name: 'Zork'.
+	grulPackage := Package new 
+					name: 'Grul';
+					commitPathJs: 'server/grul/js';
+					commitPathSt: 'grul/st';
+					yourself
+! !
+
+!PackageTest methodsFor: 'tests'!
+
+testGrulCommitPathStShouldBeGrulSt
+	self assert: 'grul/st' equals: grulPackage commitPathSt
+!
+
+testZorkCommitPathStShouldBeSt
+	self assert: 'st' equals: zorkPackage commitPathSt
+!
+
+testZorkCommitPathJsShouldBeJs
+	self assert: 'js' equals: zorkPackage commitPathJs
+!
+
+testGrulCommitPathJsShouldBeServerGrulJs
+	self assert: 'server/grul/js' equals: grulPackage commitPathJs
+! !
+
+PackageTest subclass: #PackageWithDefaultCommitPathChangedTest
+	instanceVariableNames: 'backUpCommitPathJs backUpCommitPathSt'
+	category: 'Kernel-Tests'!
+
+!PackageWithDefaultCommitPathChangedTest methodsFor: 'running'!
+
+setUp
+	super setUp.
+	backUpCommitPathJs := Package defaultCommitPathJs.
+	backUpCommitPathSt := Package defaultCommitPathSt.
+
+	Package
+		defaultCommitPathJs: 'javascripts/';
+		defaultCommitPathSt: 'smalltalk/'.
+!
+
+tearDown
+	 Package 
+		defaultCommitPathJs: backUpCommitPathJs;
+		defaultCommitPathSt: backUpCommitPathSt
+! !
+
+!PackageWithDefaultCommitPathChangedTest methodsFor: 'tests'!
+
+testGrulCommitPathJsShouldBeServerGrulJs
+	self assert: 'server/grul/js' equals: grulPackage commitPathJs
+!
+
+testGrulCommitPathStShouldBeGrulSt
+	self assert: 'grul/st' equals: grulPackage commitPathSt
+!
+
+testZorkCommitPathJsShouldBeJavascript
+	self assert: 'javascripts/' equals: zorkPackage commitPathJs
+!
+
+testZorkCommitPathStShouldBeSmalltalk
+	self assert: 'smalltalk/' equals: zorkPackage commitPathSt
+! !
+
+!PackageWithDefaultCommitPathChangedTest class methodsFor: 'accessing'!
+
+shouldInheritSelectors
+	^ false
+! !
+

+ 37 - 3
st/Kernel.st

@@ -375,7 +375,7 @@ current
 ! !
 
 Object subclass: #Package
-	instanceVariableNames: ''
+	instanceVariableNames: 'commitPathJs commitPathSt'
 	category: 'Kernel'!
 !Package commentStamp!
 A Package is similar to a "class category" typically found in other Smalltalks like Pharo or Squeak. Amber does not have class categories anymore, it had in the beginning but now each class in the system knows which package it belongs to.
@@ -404,7 +404,23 @@ requires
 !
 
 name: aString
-	<return self.pkgName = aString>
+	<self.pkgName = aString>
+!
+
+commitPathJs
+	^ commitPathJs := self class defaultCommitPathJs
+!
+
+commitPathSt
+	^ commitPathSt := self class defaultCommitPathSt
+!
+
+commitPathJs: aString
+	commitPathJs := aString
+!
+
+commitPathSt: aString
+	commitPathSt := aString
 ! !
 
 !Package methodsFor: 'classes'!
@@ -420,7 +436,9 @@ printString
 	^self name
 ! !
 
-!Package class methodsFor: 'not yet classified'!
+Package class instanceVariableNames: 'defaultCommitPathJs defaultCommitPathSt'!
+
+!Package class methodsFor: 'accessing'!
 
 named: aPackageName
 
@@ -430,6 +448,22 @@ named: aPackageName
 named: aPackageName ifAbsent: aBlock
 
 	^Smalltalk current packageAt: aPackageName ifAbsent: aBlock
+!
+
+defaultCommitPathSt
+	^ defaultCommitPathSt ifNil: [ defaultCommitPathSt := 'st']
+!
+
+defaultCommitPathJs
+	^ defaultCommitPathJs ifNil: [ defaultCommitPathJs := 'js']
+!
+
+defaultCommitPathSt: aString
+	defaultCommitPathSt := aString
+!
+
+defaultCommitPathJs: aString
+	defaultCommitPathJs := aString
 ! !
 
 Object subclass: #Behavior

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini