|
@@ -2,8 +2,8 @@ define("amber_core/Helios-Helpers", ["amber_vm/smalltalk", "amber_vm/nil", "ambe
|
|
|
smalltalk.addPackage('Helios-Helpers');
|
|
|
smalltalk.packages["Helios-Helpers"].transport = {"type":"amd","amdNamespace":"amber_core"};
|
|
|
|
|
|
-smalltalk.addClass('HLClassifierLink', smalltalk.Object, ['next', 'method'], 'Helios-Helpers');
|
|
|
-smalltalk.HLClassifierLink.comment="I am an abstract class implementing a link in a `chain of responsibility` pattern.\x0a\x0ay subclasses are in charge of classifying a method according to multiple strategies";
|
|
|
+smalltalk.addClass('HLClassifier', smalltalk.Object, ['next', 'method'], 'Helios-Helpers');
|
|
|
+smalltalk.HLClassifier.comment="I am an abstract class implementing a link in a `chain of responsibility` pattern.\x0a\x0aSubclasses are in charge of classifying a method according to multiple strategies.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "classify",
|
|
@@ -23,16 +23,16 @@ $3=self._doClassify();
|
|
|
if(smalltalk.assert($3)){
|
|
|
$2=true;
|
|
|
} else {
|
|
|
-$2=_st(self._next())._execute();
|
|
|
+$2=_st(self._next())._classify();
|
|
|
};
|
|
|
return $2;
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"classify",{},smalltalk.HLClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"classify",{},smalltalk.HLClassifier)})},
|
|
|
args: [],
|
|
|
-source: "classify\x0a\x09self next ifNil: [ ^ false ].\x0a\x09\x0a\x09^ self doClassify\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: [ self next execute ]",
|
|
|
-messageSends: ["ifNil:", "next", "ifTrue:ifFalse:", "doClassify", "execute"],
|
|
|
+source: "classify\x0a\x09self next ifNil: [ ^ false ].\x0a\x09\x0a\x09^ self doClassify\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: [ self next classify ]",
|
|
|
+messageSends: ["ifNil:", "next", "ifTrue:ifFalse:", "doClassify", "classify"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -42,13 +42,13 @@ fn: function (){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
self._subclassResponsibility();
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"doClassify",{},smalltalk.HLClassifierLink)})},
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"doClassify",{},smalltalk.HLClassifier)})},
|
|
|
args: [],
|
|
|
source: "doClassify\x0a\x09self subclassResponsibility",
|
|
|
messageSends: ["subclassResponsibility"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -60,13 +60,13 @@ return smalltalk.withContext(function($ctx1) {
|
|
|
var $1;
|
|
|
$1=self["@method"];
|
|
|
return $1;
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.HLClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.HLClassifier)})},
|
|
|
args: [],
|
|
|
source: "method\x0a\x09^ method",
|
|
|
messageSends: [],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -85,13 +85,13 @@ var nextLink;
|
|
|
nextLink=$receiver;
|
|
|
_st(nextLink)._method_(anObject);
|
|
|
};
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"method:",{anObject:anObject},smalltalk.HLClassifierLink)})},
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"method:",{anObject:anObject},smalltalk.HLClassifier)})},
|
|
|
args: ["anObject"],
|
|
|
source: "method: anObject\x0a\x09method := anObject.\x0a\x09self next\x0a\x09\x09ifNotNil: [ :nextLink | nextLink method: anObject ]",
|
|
|
messageSends: ["ifNotNil:", "next", "method:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -103,13 +103,13 @@ return smalltalk.withContext(function($ctx1) {
|
|
|
var $1;
|
|
|
$1=self["@next"];
|
|
|
return $1;
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.HLClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"next",{},smalltalk.HLClassifier)})},
|
|
|
args: [],
|
|
|
source: "next\x0a\x09^ next",
|
|
|
messageSends: [],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -119,18 +119,18 @@ fn: function (anObject){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
self["@next"]=anObject;
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"next:",{anObject:anObject},smalltalk.HLClassifierLink)})},
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"next:",{anObject:anObject},smalltalk.HLClassifier)})},
|
|
|
args: ["anObject"],
|
|
|
source: "next: anObject\x0a\x09next := anObject",
|
|
|
messageSends: [],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLClassifierLink);
|
|
|
+smalltalk.HLClassifier);
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('HLAccessorClassifierLink', smalltalk.HLClassifierLink, [], 'Helios-Helpers');
|
|
|
-smalltalk.HLAccessorClassifierLink.comment="I am a classifier checking the method selector matches an instance variable name";
|
|
|
+smalltalk.addClass('HLAccessorClassifier', smalltalk.HLClassifier, [], 'Helios-Helpers');
|
|
|
+smalltalk.HLAccessorClassifier.comment="I am a classifier checking the method selector matches an instance variable name.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "doClassify",
|
|
@@ -153,18 +153,18 @@ return false;
|
|
|
};
|
|
|
_st(self["@method"])._protocol_("accessing");
|
|
|
return true;
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"doClassify",{names:names,selector:selector},smalltalk.HLAccessorClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"doClassify",{names:names,selector:selector},smalltalk.HLAccessorClassifier)})},
|
|
|
args: [],
|
|
|
source: "doClassify\x0a\x09| names selector |\x0a\x09\x0a\x09names := method methodClass allInstanceVariableNames.\x0a\x09selector := method selector.\x0a\x09\x0a\x09(selector last = ':')\x0a\x09\x09ifTrue: [ \x22selector might be a setter\x22\x0a\x09\x09\x09selector := selector allButLast ].\x0a\x09\x0a\x09(names includes: selector)\x0a\x09\x09ifFalse: [ ^ false ].\x0a\x09\x09\x0a\x09method protocol: 'accessing'.\x0a\x09^ true.",
|
|
|
messageSends: ["allInstanceVariableNames", "methodClass", "selector", "ifTrue:", "=", "last", "allButLast", "ifFalse:", "includes:", "protocol:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLAccessorClassifierLink);
|
|
|
+smalltalk.HLAccessorClassifier);
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('HLImplementorClassifierLink', smalltalk.HLClassifierLink, [], 'Helios-Helpers');
|
|
|
-smalltalk.HLImplementorClassifierLink.comment="I am a classifier checking the other implementations of the same selector and choose the protocol the most populated";
|
|
|
+smalltalk.addClass('HLImplementorClassifier', smalltalk.HLClassifier, [], 'Helios-Helpers');
|
|
|
+smalltalk.HLImplementorClassifier.comment="I am a classifier checking the other implementations of the same selector and choose the protocol the most populated.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "doClassify",
|
|
@@ -198,18 +198,18 @@ throw $early=[true];
|
|
|
return false;
|
|
|
}
|
|
|
catch(e) {if(e===$early)return e[0]; throw e}
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"doClassify",{currentClass:currentClass},smalltalk.HLImplementorClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"doClassify",{currentClass:currentClass},smalltalk.HLImplementorClassifier)})},
|
|
|
args: [],
|
|
|
source: "doClassify\x0a\x09| currentClass |\x0a\x09currentClass := method methodClass.\x0a\x09\x0a\x09[ currentClass superclass isNil ] whileFalse: [\x0a\x09\x09currentClass := currentClass superclass.\x0a\x09\x09(currentClass includesSelector: method selector)\x0a\x09\x09\x09ifTrue: [ \x0a\x09\x09\x09\x09method protocol: (currentClass >> method selector) protocol.\x0a\x09\x09\x09\x09^ true ]].\x0a\x09\x0a\x09^ false.",
|
|
|
messageSends: ["methodClass", "whileFalse:", "isNil", "superclass", "ifTrue:", "includesSelector:", "selector", "protocol:", "protocol", ">>"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLImplementorClassifierLink);
|
|
|
+smalltalk.HLImplementorClassifier);
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('HLPrefixClassifierLink', smalltalk.HLClassifierLink, ['prefixMapping'], 'Helios-Helpers');
|
|
|
-smalltalk.HLPrefixClassifierLink.comment="I am classifier checking the method selector to know if it begins with a known prefix";
|
|
|
+smalltalk.addClass('HLPrefixClassifier', smalltalk.HLClassifier, ['prefixMapping'], 'Helios-Helpers');
|
|
|
+smalltalk.HLPrefixClassifier.comment="I am classifier checking the method selector to know if it begins with a known prefix.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "buildPrefixDictionary",
|
|
@@ -244,13 +244,13 @@ $ctx1.sendIdx["at:put:"]=10;
|
|
|
_st($1)._at_put_("as","converting");
|
|
|
$ctx1.sendIdx["at:put:"]=11;
|
|
|
$2=_st($1)._at_put_("new","instance creation");
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"buildPrefixDictionary",{},smalltalk.HLPrefixClassifierLink)})},
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"buildPrefixDictionary",{},smalltalk.HLPrefixClassifier)})},
|
|
|
args: [],
|
|
|
source: "buildPrefixDictionary\x0a\x09prefixMapping := Dictionary new.\x0a\x09prefixMapping \x0a\x09\x09at: 'test' put: 'tests';\x0a\x09 \x09at: 'bench' put: 'benchmarking';\x0a\x09 \x09at: 'copy' put: 'copying';\x0a\x09\x09at: 'initialize' put: 'initialization';\x0a\x09\x09at: 'accept' put: 'visitor';\x0a\x09\x09at: 'visit' put: 'visitor';\x0a\x09\x09at: 'signal' put: 'signalling';\x0a\x09\x09at: 'parse' put: 'parsing';\x0a\x09\x09at: 'add' put: 'adding';\x0a\x09\x09at: 'is' put: 'testing';\x0a\x09\x09at: 'as' put: 'converting';\x0a\x09\x09at: 'new' put: 'instance creation'.",
|
|
|
messageSends: ["new", "at:put:"],
|
|
|
referencedClasses: ["Dictionary"]
|
|
|
}),
|
|
|
-smalltalk.HLPrefixClassifierLink);
|
|
|
+smalltalk.HLPrefixClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -273,13 +273,13 @@ throw $early=[true];
|
|
|
return false;
|
|
|
}
|
|
|
catch(e) {if(e===$early)return e[0]; throw e}
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"doClassify",{},smalltalk.HLPrefixClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"doClassify",{},smalltalk.HLPrefixClassifier)})},
|
|
|
args: [],
|
|
|
source: "doClassify\x0a\x09prefixMapping keysAndValuesDo: [ :prefix :protocol |\x0a\x09\x09(method selector beginsWith: prefix)\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09method protocol: protocol.\x0a\x09\x09\x09\x09^ true ]].\x0a\x09^ false.",
|
|
|
messageSends: ["keysAndValuesDo:", "ifTrue:", "beginsWith:", "selector", "protocol:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLPrefixClassifierLink);
|
|
|
+smalltalk.HLPrefixClassifier);
|
|
|
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
@@ -288,20 +288,20 @@ protocol: 'initialization',
|
|
|
fn: function (){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-smalltalk.HLPrefixClassifierLink.superclass.fn.prototype._initialize.apply(_st(self), []);
|
|
|
+smalltalk.HLPrefixClassifier.superclass.fn.prototype._initialize.apply(_st(self), []);
|
|
|
self._buildPrefixDictionary();
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLPrefixClassifierLink)})},
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLPrefixClassifier)})},
|
|
|
args: [],
|
|
|
source: "initialize\x0a\x09super initialize.\x0a\x0a\x09self buildPrefixDictionary",
|
|
|
messageSends: ["initialize", "buildPrefixDictionary"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
-smalltalk.HLPrefixClassifierLink);
|
|
|
+smalltalk.HLPrefixClassifier);
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('HLSuperClassClassifierLink', smalltalk.HLClassifierLink, [], 'Helios-Helpers');
|
|
|
-smalltalk.HLSuperClassClassifierLink.comment="I am a classifier checking the superclass chain to find a matching selector";
|
|
|
+smalltalk.addClass('HLSuperclassClassifier', smalltalk.HLClassifier, [], 'Helios-Helpers');
|
|
|
+smalltalk.HLSuperclassClassifier.comment="I am a classifier checking the superclass chain to find a matching selector.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "doClassify",
|
|
@@ -368,18 +368,18 @@ _st(self["@method"])._protocol_(protocolToUse);
|
|
|
return true;
|
|
|
}
|
|
|
catch(e) {if(e===$early)return e[0]; throw e}
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"doClassify",{protocolBag:protocolBag,methods:methods,protocolToUse:protocolToUse,counter:counter},smalltalk.HLSuperClassClassifierLink)})},
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"doClassify",{protocolBag:protocolBag,methods:methods,protocolToUse:protocolToUse,counter:counter},smalltalk.HLSuperclassClassifier)})},
|
|
|
args: [],
|
|
|
source: "doClassify\x0a\x09| protocolBag methods protocolToUse counter |\x0a\x09\x0a\x09protocolBag := Dictionary new.\x0a\x09methods := HLReferencesModel new implementorsOf: method selector.\x0a\x09methods\x0a\x09\x09ifEmpty: [ ^ false ]\x0a\x09\x09ifNotEmpty: [\x0a\x09\x09\x09methods \x0a\x09\x09\x09\x09do: [ :aMethod || protocol |\x0a\x09\x09\x09\x09\x09protocol := aMethod method protocol.\x0a\x09\x09\x09\x09\x09(method methodClass = aMethod methodClass)\x0a\x09\x09\x09\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09\x09\x09((protocol first = '*') or: [ protocol = method defaultProtocol ])\x0a\x09\x09\x09\x09\x09\x09\x09ifFalse: [ \x0a\x09\x09\x09\x09\x09\x09\x09\x09protocolBag \x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09at: protocol \x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09put: (protocolBag at: protocol ifAbsent: [ 0 ]) + 1 ] ] ] ].\x0a\x09\x09\x09\x0a\x09protocolBag ifEmpty: [ ^ false ].\x0a\x09protocolToUse := nil.\x0a\x09counter := 0.\x0a\x09protocolBag keysAndValuesDo: [ :key :value | value > counter \x0a\x09\x09ifTrue: [\x0a\x09\x09\x09counter := value.\x0a\x09\x09\x09protocolToUse := key ] ].\x0a\x09method protocol: protocolToUse.\x0a\x09^ true",
|
|
|
messageSends: ["new", "implementorsOf:", "selector", "ifEmpty:ifNotEmpty:", "do:", "protocol", "method", "ifFalse:", "=", "methodClass", "or:", "first", "defaultProtocol", "at:put:", "+", "at:ifAbsent:", "ifEmpty:", "keysAndValuesDo:", "ifTrue:", ">", "protocol:"],
|
|
|
referencedClasses: ["Dictionary", "HLReferencesModel"]
|
|
|
}),
|
|
|
-smalltalk.HLSuperClassClassifierLink);
|
|
|
+smalltalk.HLSuperclassClassifier);
|
|
|
|
|
|
|
|
|
|
|
|
smalltalk.addClass('HLGenerationOutput', smalltalk.Object, ['sourceCodes', 'protocol', 'targetClass'], 'Helios-Helpers');
|
|
|
-smalltalk.HLGenerationOutput.comment="I am a simple data object used to store the result of a generation process";
|
|
|
+smalltalk.HLGenerationOutput.comment="I am a simple data object used to store the result of a generation process.";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "addSourceCode:",
|
|
@@ -541,58 +541,25 @@ smalltalk.HLGenerationOutput);
|
|
|
|
|
|
|
|
|
|
|
|
-smalltalk.addClass('HLMethodClassifier', smalltalk.Object, ['firstLink'], 'Helios-Helpers');
|
|
|
+smalltalk.addClass('HLMethodClassifier', smalltalk.Object, ['firstClassifier'], 'Helios-Helpers');
|
|
|
smalltalk.HLMethodClassifier.comment="I am in charge of categorizing methods following this strategy:\x0a\x0a- is it an accessor?\x0a- is it overriding a superclass method?\x0a- is it starting with a know prefix?\x0a- how are categorized the other implementations?";
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
-selector: "addLink:",
|
|
|
+selector: "addClassifier:",
|
|
|
protocol: 'private',
|
|
|
-fn: function (aLink){
|
|
|
+fn: function (aClassifier){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-_st(aLink)._next_(self["@firstLink"]);
|
|
|
-self["@firstLink"]=aLink;
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"addLink:",{aLink:aLink},smalltalk.HLMethodClassifier)})},
|
|
|
-args: ["aLink"],
|
|
|
-source: "addLink: aLink\x0a\x09aLink next: firstLink.\x0a\x09firstLink := aLink",
|
|
|
+_st(aClassifier)._next_(self["@firstClassifier"]);
|
|
|
+self["@firstClassifier"]=aClassifier;
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"addClassifier:",{aClassifier:aClassifier},smalltalk.HLMethodClassifier)})},
|
|
|
+args: ["aClassifier"],
|
|
|
+source: "addClassifier: aClassifier\x0a\x09aClassifier next: firstClassifier.\x0a\x09firstClassifier := aClassifier",
|
|
|
messageSends: ["next:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLMethodClassifier);
|
|
|
|
|
|
-smalltalk.addMethod(
|
|
|
-smalltalk.method({
|
|
|
-selector: "buildChainOfResponsibility",
|
|
|
-protocol: 'initialization',
|
|
|
-fn: function (){
|
|
|
-var self=this;
|
|
|
-function $HLImplementorClassifierLink(){return smalltalk.HLImplementorClassifierLink||(typeof HLImplementorClassifierLink=="undefined"?nil:HLImplementorClassifierLink)}
|
|
|
-function $HLPrefixClassifierLink(){return smalltalk.HLPrefixClassifierLink||(typeof HLPrefixClassifierLink=="undefined"?nil:HLPrefixClassifierLink)}
|
|
|
-function $HLSuperclassClassifierLink(){return smalltalk.HLSuperclassClassifierLink||(typeof HLSuperclassClassifierLink=="undefined"?nil:HLSuperclassClassifierLink)}
|
|
|
-function $HLAccessorClassifierLink(){return smalltalk.HLAccessorClassifierLink||(typeof HLAccessorClassifierLink=="undefined"?nil:HLAccessorClassifierLink)}
|
|
|
-return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3;
|
|
|
-$1=_st($HLImplementorClassifierLink())._new();
|
|
|
-$ctx1.sendIdx["new"]=1;
|
|
|
-self._addLink_($1);
|
|
|
-$ctx1.sendIdx["addLink:"]=1;
|
|
|
-$2=_st($HLPrefixClassifierLink())._new();
|
|
|
-$ctx1.sendIdx["new"]=2;
|
|
|
-self._addLink_($2);
|
|
|
-$ctx1.sendIdx["addLink:"]=2;
|
|
|
-$3=_st($HLSuperclassClassifierLink())._new();
|
|
|
-$ctx1.sendIdx["new"]=3;
|
|
|
-self._addLink_($3);
|
|
|
-$ctx1.sendIdx["addLink:"]=3;
|
|
|
-self._addLink_(_st($HLAccessorClassifierLink())._new());
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"buildChainOfResponsibility",{},smalltalk.HLMethodClassifier)})},
|
|
|
-args: [],
|
|
|
-source: "buildChainOfResponsibility\x0a\x09self addLink: HLImplementorClassifierLink new.\x0a\x09self addLink: HLPrefixClassifierLink new.\x0a\x09self addLink: HLSuperclassClassifierLink new.\x0a\x09self addLink: HLAccessorClassifierLink new",
|
|
|
-messageSends: ["addLink:", "new"],
|
|
|
-referencedClasses: ["HLImplementorClassifierLink", "HLPrefixClassifierLink", "HLSuperclassClassifierLink", "HLAccessorClassifierLink"]
|
|
|
-}),
|
|
|
-smalltalk.HLMethodClassifier);
|
|
|
-
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "classify:",
|
|
@@ -601,12 +568,12 @@ fn: function (aMethod){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
var $1,$2;
|
|
|
-$1=self["@firstLink"];
|
|
|
+$1=self["@firstClassifier"];
|
|
|
_st($1)._method_(aMethod);
|
|
|
$2=_st($1)._classify();
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"classify:",{aMethod:aMethod},smalltalk.HLMethodClassifier)})},
|
|
|
args: ["aMethod"],
|
|
|
-source: "classify: aMethod\x0a\x09firstLink\x0a\x09\x09method: aMethod;\x0a\x09\x09classify",
|
|
|
+source: "classify: aMethod\x0a\x09firstClassifier\x0a\x09\x09method: aMethod;\x0a\x09\x09classify",
|
|
|
messageSends: ["method:", "classify"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
@@ -639,15 +606,48 @@ fn: function (){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
smalltalk.HLMethodClassifier.superclass.fn.prototype._initialize.apply(_st(self), []);
|
|
|
-self._buildChainOfResponsibility();
|
|
|
+self._setupClassifiers();
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.HLMethodClassifier)})},
|
|
|
args: [],
|
|
|
-source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09self buildChainOfResponsibility",
|
|
|
-messageSends: ["initialize", "buildChainOfResponsibility"],
|
|
|
+source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09self setupClassifiers",
|
|
|
+messageSends: ["initialize", "setupClassifiers"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.HLMethodClassifier);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "setupClassifiers",
|
|
|
+protocol: 'initialization',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+function $HLImplementorClassifier(){return smalltalk.HLImplementorClassifier||(typeof HLImplementorClassifier=="undefined"?nil:HLImplementorClassifier)}
|
|
|
+function $HLPrefixClassifier(){return smalltalk.HLPrefixClassifier||(typeof HLPrefixClassifier=="undefined"?nil:HLPrefixClassifier)}
|
|
|
+function $HLSuperclassClassifier(){return smalltalk.HLSuperclassClassifier||(typeof HLSuperclassClassifier=="undefined"?nil:HLSuperclassClassifier)}
|
|
|
+function $HLAccessorClassifier(){return smalltalk.HLAccessorClassifier||(typeof HLAccessorClassifier=="undefined"?nil:HLAccessorClassifier)}
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1,$2,$3;
|
|
|
+$1=_st($HLImplementorClassifier())._new();
|
|
|
+$ctx1.sendIdx["new"]=1;
|
|
|
+self._addClassifier_($1);
|
|
|
+$ctx1.sendIdx["addClassifier:"]=1;
|
|
|
+$2=_st($HLPrefixClassifier())._new();
|
|
|
+$ctx1.sendIdx["new"]=2;
|
|
|
+self._addClassifier_($2);
|
|
|
+$ctx1.sendIdx["addClassifier:"]=2;
|
|
|
+$3=_st($HLSuperclassClassifier())._new();
|
|
|
+$ctx1.sendIdx["new"]=3;
|
|
|
+self._addClassifier_($3);
|
|
|
+$ctx1.sendIdx["addClassifier:"]=3;
|
|
|
+self._addClassifier_(_st($HLAccessorClassifier())._new());
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"setupClassifiers",{},smalltalk.HLMethodClassifier)})},
|
|
|
+args: [],
|
|
|
+source: "setupClassifiers\x0a\x09self addClassifier: HLImplementorClassifier new.\x0a\x09self addClassifier: HLPrefixClassifier new.\x0a\x09self addClassifier: HLSuperclassClassifier new.\x0a\x09self addClassifier: HLAccessorClassifier new",
|
|
|
+messageSends: ["addClassifier:", "new"],
|
|
|
+referencedClasses: ["HLImplementorClassifier", "HLPrefixClassifier", "HLSuperclassClassifier", "HLAccessorClassifier"]
|
|
|
+}),
|
|
|
+smalltalk.HLMethodClassifier);
|
|
|
+
|
|
|
|
|
|
|
|
|
smalltalk.addClass('HLMethodGenerator', smalltalk.Object, ['output'], 'Helios-Helpers');
|