1
0
Quellcode durchsuchen

Merge pull request #765 from herby/ext-728

Fixes #727
Nicolas Petton vor 11 Jahren
Ursprung
Commit
4d9610d487
3 geänderte Dateien mit 188 neuen und 1 gelöschten Zeilen
  1. 15 1
      API-CHANGES.txt
  2. 132 0
      js/Kernel-ImportExport.js
  3. 41 0
      st/Kernel-ImportExport.st

+ 15 - 1
API-CHANGES.txt

@@ -1,8 +1,22 @@
-0.12.3:
+0.12.3 (wip):
 
 * Package Import-Export renamed to Kernel-ImportExport
 
 
++ Package
+  + >>load
+  + >>loadFromNamespace:
++ Package class
+  + >>load:
+  + >>load:fromNamespace:
++ PackageTransport
+  + >>load
++ PackageHandler
+  + >>load:
++ AmdPackageHandler
+  + >>load:
+
+
 0.12.2:
 
 * Collection >> contains: is deprecated in favor of anySatisfy:

+ 132 - 0
js/Kernel-ImportExport.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, [], 'Kernel-ImportExport');
@@ -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,75 @@ referencedClasses: []
 }),
 smalltalk.Package);
 
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load",
+category: '*Kernel-ImportExport',
+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);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "loadFromNamespace:",
+category: '*Kernel-ImportExport',
+fn: function (aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+var $2,$3,$1;
+$2=self._transport();
+_st($2)._namespace_(aString);
+$3=_st($2)._load();
+$1=$3;
+return $1;
+}, function($ctx1) {$ctx1.fill(self,"loadFromNamespace:",{aString:aString},smalltalk.Package)})},
+args: ["aString"],
+source: "loadFromNamespace: aString\x0a\x09^ self transport\x0a\x09\x09namespace: aString;\x0a\x09\x09load",
+messageSends: ["namespace:", "transport", "load"],
+referencedClasses: []
+}),
+smalltalk.Package);
+
+smalltalk.addMethod(
+smalltalk.method({
+selector: "load:",
+category: '*Kernel-ImportExport',
+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: "load:fromNamespace:",
+category: '*Kernel-ImportExport',
+fn: function (aPackageName,aString){
+var self=this;
+return smalltalk.withContext(function($ctx1) { 
+_st(self._named_(aPackageName))._loadFromNamespace_(aString);
+return self}, function($ctx1) {$ctx1.fill(self,"load:fromNamespace:",{aPackageName:aPackageName,aString:aString},smalltalk.Package.klass)})},
+args: ["aPackageName", "aString"],
+source: "load: aPackageName fromNamespace: aString\x0a\x09(self named: aPackageName) loadFromNamespace: aString",
+messageSends: ["loadFromNamespace:", "named:"],
+referencedClasses: []
+}),
+smalltalk.Package.klass);
+
 });

+ 41 - 0
st/Kernel-ImportExport.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,25 @@ namespace: aString
 
 commit
 	^ self transport commit
+!
+
+load
+	^ self transport load
+!
+
+loadFromNamespace: aString
+	^ self transport
+		namespace: aString;
+		load
+! !
+
+!Package class methodsFor: '*Kernel-ImportExport'!
+
+load: aPackageName
+	(self named: aPackageName) load
+!
+
+load: aPackageName fromNamespace: aString
+	(self named: aPackageName) loadFromNamespace: aString
 ! !