瀏覽代碼

first shot on customizing commit path per package

Laurent Laffont 12 年之前
父節點
當前提交
82b75c3e03
共有 10 個文件被更改,包括 690 次插入14 次删除
  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 suppressed because it is too large
+ 0 - 0
js/IDE.deploy.js


File diff suppressed because it is too large
+ 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

Some files were not shown because too many files changed in this diff