소스 검색

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

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
js/IDE.deploy.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 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

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.