Browse Source

Add "Package class >> load" and supporting methods

JohnnyT 10 years ago
parent
commit
ae471022d3
4 changed files with 126 additions and 0 deletions
  1. 79 0
      js/Importer-Exporter.js
  2. 16 0
      js/Kernel-Infrastructure.js
  3. 25 0
      st/Importer-Exporter.st
  4. 6 0
      st/Kernel-Infrastructure.st

+ 79 - 0
js/Importer-Exporter.js

@@ -1601,6 +1601,22 @@ referencedClasses: ["Exporter"]
 }),
 smalltalk.PackageHandler);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load:",
+category: 'loading',
+fn: function (aPackage){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+self._subclassResponsibility();
+return self}, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage},smalltalk.PackageHandler)})},
+args: ["aPackage"],
+source: "load: aPackage\x0a\x09self subclassResponsibility",
+messageSends: ["subclassResponsibility"],
+referencedClasses: []
+}),
+smalltalk.PackageHandler);
+
 
 
 smalltalk.addClass('AmdPackageHandler', smalltalk.PackageHandler, [], 'Importer-Exporter');
@@ -1658,6 +1674,35 @@ referencedClasses: ["AmdExporter"]
 }),
 smalltalk.AmdPackageHandler);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load:",
+category: 'loading',
+fn: function (aPackage){
+var self=this;
+function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
+function $Array(){return smalltalk.Array||(typeof Array=="undefined"?nil:Array)}
+return smalltalk.withContext(function($ctx1) { 
+var $1,$3,$2;
+$1=_st(_st($Smalltalk())._current())._amdRequire();
+if(($receiver = $1) == nil || $receiver == null){
+self._error_("AMD loader not present");
+} else {
+var require;
+require=$receiver;
+$3=_st(_st(self._namespaceFor_(aPackage)).__comma("/")).__comma(_st(aPackage)._name());
+$ctx1.sendIdx[","]=1;
+$2=_st($Array())._new_($3);
+_st(require)._value_($2);
+};
+return self}, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage},smalltalk.AmdPackageHandler)})},
+args: ["aPackage"],
+source: "load: aPackage\x0a\x09Smalltalk current amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require |\x0a\x09\x09\x09require value: (Array new: (self namespaceFor: aPackage), '/', aPackage name ) ]",
+messageSends: ["ifNil:ifNotNil:", "amdRequire", "current", "error:", "value:", "new:", ",", "namespaceFor:", "name"],
+referencedClasses: ["Smalltalk", "Array"]
+}),
+smalltalk.AmdPackageHandler);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "namespaceFor:",
@@ -1826,6 +1871,22 @@ referencedClasses: []
 }),
 smalltalk.PackageTransport);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load",
+category: 'loading',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._commitHandler())._load_(self._package());
+return self}, function($ctx1) {$ctx1.fill(self,"load",{},smalltalk.PackageTransport)})},
+args: [],
+source: "load\x0a\x09self commitHandler load: self package",
+messageSends: ["load:", "commitHandler", "package"],
+referencedClasses: []
+}),
+smalltalk.PackageTransport);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "package",
@@ -2274,4 +2335,22 @@ referencedClasses: []
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load",
+category: '*Importer-Exporter',
+fn: function (){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $1;
+$1=_st(self._transport())._load();
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"load",{},smalltalk.Package)})},
+args: [],
+source: "load\x0a\x09^ self transport load",
+messageSends: ["load", "transport"],
+referencedClasses: []
+}),
+smalltalk.Package);
+
 });

+ 16 - 0
js/Kernel-Infrastructure.js

@@ -1606,6 +1606,22 @@ smalltalk.Package);
 
 
 smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load:",
+category: 'loading',
+fn: function (aPackageName){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._named_(aPackageName))._load();
+return self}, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName},smalltalk.Package.klass)})},
+args: ["aPackageName"],
+source: "load: aPackageName\x0a\x09(self named: aPackageName) load",
+messageSends: ["load", "named:"],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
 smalltalk.addMethod(
 smalltalk.method({
 selector: "named:",

+ 25 - 0
st/Importer-Exporter.st

@@ -590,6 +590,12 @@ exporter
 	^ self exporterClass new
 ! !
 
+!PackageHandler methodsFor: 'loading'!
+
+load: aPackage
+	self subclassResponsibility
+! !
+
 !PackageHandler methodsFor: 'private'!
 
 ajaxPutAt: aURL data: aString
@@ -631,6 +637,15 @@ namespaceFor: aPackage
 	^ aPackage transport namespace
 ! !
 
+!AmdPackageHandler methodsFor: 'loading'!
+
+load: aPackage
+	Smalltalk current amdRequire
+		ifNil: [ self error: 'AMD loader not present' ]
+		ifNotNil: [ :require |
+			require value: (Array new: (self namespaceFor: aPackage), '/', aPackage name ) ]
+! !
+
 !AmdPackageHandler methodsFor: 'private'!
 
 toUrl: aString
@@ -703,6 +718,12 @@ setupFromJson: anObject
 	"no op. override if needed in subclasses"
 ! !
 
+!PackageTransport methodsFor: 'loading'!
+
+load
+	self commitHandler load: self package
+! !
+
 PackageTransport class instanceVariableNames: 'registry'!
 
 !PackageTransport class methodsFor: 'accessing'!
@@ -831,5 +852,9 @@ namespace: aString
 
 commit
 	^ self transport commit
+!
+
+load
+	^ self transport load
 ! !
 

+ 6 - 0
st/Kernel-Infrastructure.st

@@ -619,6 +619,12 @@ named: aPackageName transport: aTransport
 	^ package
 ! !
 
+!Package class methodsFor: 'loading'!
+
+load: aPackageName
+	(self named: aPackageName) load
+! !
+
 !Package class methodsFor: 'sorting'!
 
 sortedClasses: classes