Browse Source

Merge pull request #624 from herby/output-transport-type

Default transport type set; output transport type
Nicolas Petton 10 years ago
parent
commit
73e76b5edf

+ 36 - 1
js/Importer-Exporter.deploy.js

@@ -494,6 +494,30 @@ return self}, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aP
 messageSends: ["nextPutAll:", "lf"]}),
 smalltalk.Exporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportPackageTransportOf:on:",
+fn: function (aPackage,aStream){
+var self=this;
+var json;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
+json=_st(aPackage)._transportJson();
+$1=_st(json).__eq("null");
+if(! smalltalk.assert($1)){
+$2=aStream;
+_st($2)._nextPutAll_("smalltalk.packages[");
+_st($2)._nextPutAll_(_st(_st(aPackage)._name())._asJavascript());
+_st($2)._nextPutAll_("].transport = ");
+_st($2)._nextPutAll_(json);
+_st($2)._nextPutAll_(";");
+$3=_st($2)._lf();
+$3;
+};
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream,json:json},smalltalk.Exporter)})},
+messageSends: ["transportJson", "ifFalse:", "nextPutAll:", "asJavascript", "name", "lf", "="]}),
+smalltalk.Exporter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "extensionMethodsOfPackage:",
@@ -566,7 +590,7 @@ var self=this;
 function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
+$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),self.__minus_gt("exportPackageTransportOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.Exporter)})},
 messageSends: ["->"]}),
@@ -1436,6 +1460,17 @@ return $1;
 messageSends: ["for:", "transportType"]}),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "transportJson",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return JSON.stringify(self.transport || null);;
+return self}, function($ctx1) {$ctx1.fill(self,"transportJson",{},smalltalk.Package)})},
+messageSends: []}),
+smalltalk.Package);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "transportType",

+ 47 - 2
js/Importer-Exporter.js

@@ -607,6 +607,35 @@ referencedClasses: []
 }),
 smalltalk.Exporter);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "exportPackageTransportOf:on:",
+category: 'output',
+fn: function (aPackage,aStream){
+var self=this;
+var json;
+return smalltalk.withContext(function($ctx1) { 
+var $1,$2,$3;
+json=_st(aPackage)._transportJson();
+$1=_st(json).__eq("null");
+if(! smalltalk.assert($1)){
+$2=aStream;
+_st($2)._nextPutAll_("smalltalk.packages[");
+_st($2)._nextPutAll_(_st(_st(aPackage)._name())._asJavascript());
+_st($2)._nextPutAll_("].transport = ");
+_st($2)._nextPutAll_(json);
+_st($2)._nextPutAll_(";");
+$3=_st($2)._lf();
+$3;
+};
+return self}, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream,json:json},smalltalk.Exporter)})},
+args: ["aPackage", "aStream"],
+source: "exportPackageTransportOf: aPackage on: aStream\x0a\x09| json |\x0a\x09json := aPackage transportJson.\x0a\x09json = 'null' ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: 'smalltalk.packages[';\x0a\x09\x09\x09nextPutAll: aPackage name asJavascript;\x0a\x09\x09\x09nextPutAll: '].transport = ';\x0a\x09\x09\x09nextPutAll: json;\x0a\x09\x09\x09nextPutAll: ';';\x0a\x09\x09\x09lf ]",
+messageSends: ["transportJson", "ifFalse:", "nextPutAll:", "asJavascript", "name", "lf", "="],
+referencedClasses: []
+}),
+smalltalk.Exporter);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "extensionMethodsOfPackage:",
@@ -695,11 +724,11 @@ var self=this;
 function $PluggableExporter(){return smalltalk.PluggableExporter||(typeof PluggableExporter=="undefined"?nil:PluggableExporter)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
-$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
+$1=[self.__minus_gt("exportPackagePrologueOf:on:"),self.__minus_gt("exportPackageDefinitionOf:on:"),self.__minus_gt("exportPackageTransportOf:on:"),[_st($PluggableExporter()).__minus_gt("ownClassesOfPackage:"),self.__minus_gt("exportDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfClass:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportMetaDefinitionOf:on:"),[self.__minus_gt("ownMethodsOfMetaClass:"),self.__minus_gt("exportMethod:on:")]],[self.__minus_gt("extensionMethodsOfPackage:"),self.__minus_gt("exportMethod:on:")],self.__minus_gt("exportPackageEpilogueOf:on:")];
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"recipe",{},smalltalk.Exporter)})},
 args: [],
-source: "recipe\x0a\x09\x22Export a given package.\x22\x0a\x0a\x09^{\x0a\x09\x09self -> #exportPackagePrologueOf:on:.\x0a\x09\x09self -> #exportPackageDefinitionOf:on:.\x0a\x09\x09{\x0a\x09\x09\x09PluggableExporter -> #ownClassesOfPackage:.\x0a\x09\x09\x09self -> #exportDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09\x09self -> #exportMetaDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfMetaClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: } }.\x0a\x09\x09{\x0a\x09\x09\x09self -> #extensionMethodsOfPackage:.\x0a\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09self -> #exportPackageEpilogueOf:on:\x0a\x09}",
+source: "recipe\x0a\x09\x22Export a given package.\x22\x0a\x0a\x09^{\x0a\x09\x09self -> #exportPackagePrologueOf:on:.\x0a\x09\x09self -> #exportPackageDefinitionOf:on:.\x0a\x09\x09self -> #exportPackageTransportOf:on:.\x0a\x09\x09{\x0a\x09\x09\x09PluggableExporter -> #ownClassesOfPackage:.\x0a\x09\x09\x09self -> #exportDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09\x09self -> #exportMetaDefinitionOf:on:.\x0a\x09\x09\x09{\x0a\x09\x09\x09\x09self -> #ownMethodsOfMetaClass:.\x0a\x09\x09\x09\x09self -> #exportMethod:on: } }.\x0a\x09\x09{\x0a\x09\x09\x09self -> #extensionMethodsOfPackage:.\x0a\x09\x09\x09self -> #exportMethod:on: }.\x0a\x09\x09self -> #exportPackageEpilogueOf:on:\x0a\x09}",
 messageSends: ["->"],
 referencedClasses: ["PluggableExporter"]
 }),
@@ -1832,6 +1861,22 @@ referencedClasses: ["PackageHandler"]
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "transportJson",
+category: '*Importer-Exporter',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return JSON.stringify(self.transport || null);;
+return self}, function($ctx1) {$ctx1.fill(self,"transportJson",{},smalltalk.Package)})},
+args: [],
+source: "transportJson\x0a\x09<return JSON.stringify(self.transport || null);>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "transportType",

+ 2 - 2
js/Kernel-Classes.deploy.js

@@ -1243,11 +1243,11 @@ return smalltalk.withContext(function($ctx1) {
 var $1;
 $1=_st($Package())._named_ifAbsent_(aString,(function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st($Smalltalk())._current())._createPackage_(aString);
+return _st(_st($Smalltalk())._current())._createDefaultPackage_(aString);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"createPackageNamed:",{aString:aString},smalltalk.ClassBuilder)})},
-messageSends: ["named:ifAbsent:", "createPackage:", "current"]}),
+messageSends: ["named:ifAbsent:", "createDefaultPackage:", "current"]}),
 smalltalk.ClassBuilder);
 
 smalltalk.addMethod(

+ 3 - 3
js/Kernel-Classes.js

@@ -1628,13 +1628,13 @@ return smalltalk.withContext(function($ctx1) {
 var $1;
 $1=_st($Package())._named_ifAbsent_(aString,(function(){
 return smalltalk.withContext(function($ctx2) {
-return _st(_st($Smalltalk())._current())._createPackage_(aString);
+return _st(_st($Smalltalk())._current())._createDefaultPackage_(aString);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"createPackageNamed:",{aString:aString},smalltalk.ClassBuilder)})},
 args: ["aString"],
-source: "createPackageNamed: aString\x0a\x09^ Package named: aString ifAbsent: [\x0a\x09\x09Smalltalk current createPackage: aString ]",
-messageSends: ["named:ifAbsent:", "createPackage:", "current"],
+source: "createPackageNamed: aString\x0a\x09^ Package named: aString ifAbsent: [\x0a\x09\x09Smalltalk current createDefaultPackage: aString ]",
+messageSends: ["named:ifAbsent:", "createDefaultPackage:", "current"],
 referencedClasses: ["Smalltalk", "Package"]
 }),
 smalltalk.ClassBuilder);

+ 24 - 0
js/Kernel-Infrastructure.deploy.js

@@ -1066,6 +1066,17 @@ return $1;
 messageSends: ["sortedClasses:", "classes", "class"]}),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "withDefaultTransport",
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.withDefaultTransport();
+return self}, function($ctx1) {$ctx1.fill(self,"withDefaultTransport",{},smalltalk.Package)})},
+messageSends: []}),
+smalltalk.Package);
+
 
 smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
@@ -1433,6 +1444,19 @@ return self}, function($ctx1) {$ctx1.fill(self,"classes",{},smalltalk.Smalltalk)
 messageSends: []}),
 smalltalk.Smalltalk);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "createDefaultPackage:",
+fn: function (packageName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self._createPackage_(packageName))._withDefaultTransport();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"createDefaultPackage:",{packageName:packageName},smalltalk.Smalltalk)})},
+messageSends: ["withDefaultTransport", "createPackage:"]}),
+smalltalk.Smalltalk);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "createPackage:",

+ 36 - 2
js/Kernel-Infrastructure.js

@@ -1419,6 +1419,22 @@ referencedClasses: []
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "withDefaultTransport",
+category: 'accessing',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+return self.withDefaultTransport();
+return self}, function($ctx1) {$ctx1.fill(self,"withDefaultTransport",{},smalltalk.Package)})},
+args: [],
+source: "withDefaultTransport\x0a\x09<return self.withDefaultTransport()>",
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Package);
+
 
 smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
 smalltalk.addMethod(
@@ -1901,15 +1917,33 @@ smalltalk.Smalltalk);
 
 smalltalk.addMethod(
 smalltalk.method({
-selector: "createPackage:",
+selector: "createDefaultPackage:",
 category: 'packages',
 fn: function (packageName){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self._createPackage_(packageName))._withDefaultTransport();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"createDefaultPackage:",{packageName:packageName},smalltalk.Smalltalk)})},
+args: ["packageName"],
+source: "createDefaultPackage: packageName\x0a\x09\x22Create and bind a new package with given name and default transport type and return it.\x22\x0a\x09^ (self createPackage: packageName) withDefaultTransport",
+messageSends: ["withDefaultTransport", "createPackage:"],
+referencedClasses: []
+}),
+smalltalk.Smalltalk);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "createPackage:",
+category: 'private',
+fn: function (packageName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
 return smalltalk.addPackage(packageName);
 return self}, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName},smalltalk.Smalltalk)})},
 args: ["packageName"],
-source: "createPackage: packageName\x0a\x09\x22Create and bind a new package with given name and return it.\x22\x0a\x09<return smalltalk.addPackage(packageName)>",
+source: "createPackage: packageName\x0a\x09\x22Create and bind a new bare package with given name and return it.\x22\x0a\x09<return smalltalk.addPackage(packageName)>",
 messageSends: [],
 referencedClasses: []
 }),

+ 18 - 0
st/Importer-Exporter.st

@@ -237,6 +237,7 @@ recipe
 	^{
 		self -> #exportPackagePrologueOf:on:.
 		self -> #exportPackageDefinitionOf:on:.
+		self -> #exportPackageTransportOf:on:.
 		{
 			PluggableExporter -> #ownClassesOfPackage:.
 			self -> #exportDefinitionOf:on:.
@@ -329,6 +330,19 @@ exportPackagePrologueOf: aPackage on: aStream
 	aStream
 		nextPutAll: '(function(smalltalk,nil,_st){';
 		lf
+!
+
+exportPackageTransportOf: aPackage on: aStream
+	| json |
+	json := aPackage transportJson.
+	json = 'null' ifFalse: [
+		aStream
+			nextPutAll: 'smalltalk.packages[';
+			nextPutAll: aPackage name asJavascript;
+			nextPutAll: '].transport = ';
+			nextPutAll: json;
+			nextPutAll: ';';
+			lf ]
 ! !
 
 Exporter subclass: #StrippedExporter
@@ -803,6 +817,10 @@ transport
 	^ PackageHandler for: self transportType
 !
 
+transportJson
+	<return JSON.stringify(self.transport || null);>
+!
+
 transportType
 	<return (self.transport && self.transport.type) || 'unknown';>
 ! !

+ 1 - 1
st/Kernel-Classes.st

@@ -685,7 +685,7 @@ basicSwapClassNames: aClass with: anotherClass
 
 createPackageNamed: aString
 	^ Package named: aString ifAbsent: [
-		Smalltalk current createPackage: aString ]
+		Smalltalk current createDefaultPackage: aString ]
 !
 
 rawRenameClass: aClass to: aString

+ 12 - 3
st/Kernel-Infrastructure.st

@@ -484,6 +484,10 @@ name: aString
 
 organization
 	^ self basicAt: 'organization'
+!
+
+withDefaultTransport
+	<return self.withDefaultTransport()>
 ! !
 
 !Package methodsFor: 'classes'!
@@ -831,9 +835,9 @@ globalJsVariables
 
 !Smalltalk methodsFor: 'packages'!
 
-createPackage: packageName
-	"Create and bind a new package with given name and return it."
-	<return smalltalk.addPackage(packageName)>
+createDefaultPackage: packageName
+	"Create and bind a new package with given name and default transport type and return it."
+	^ (self createPackage: packageName) withDefaultTransport
 !
 
 deletePackage: packageName
@@ -888,6 +892,11 @@ basicParse: aString
 	<return smalltalk.parser.parse(aString)>
 !
 
+createPackage: packageName
+	"Create and bind a new bare package with given name and return it."
+	<return smalltalk.addPackage(packageName)>
+!
+
 createPackage: packageName properties: aDict
 	"Needed to import .st files: they begin with this call."
 	self deprecatedAPI.

+ 10 - 0
support/boot.js

@@ -414,6 +414,16 @@ function ClassesBrik(brikz, st) {
 		return st.packages[pkgName];
 	};
 
+	SmalltalkPackage.prototype.withDefaultTransport = function () {
+		if (this.transport) {
+			throw new Error("Cannot set default transport; transport already set");
+		}
+		if (st._defaultTransportType) {
+			this.transport = { type: st._defaultTransportType };
+		}
+		return this;
+	};
+
 	/* Add a class to the smalltalk object, creating a new one if needed.
 	 A Package is lazily created if it does not exist with given name. */