Browse Source

Doc-pane shows traits of class-side, too.

Herby Vojčík 3 years ago
parent
commit
58108bf9d5
2 changed files with 103 additions and 11 deletions
  1. 95 10
      src/Helios-Browser.js
  2. 8 1
      src/Helios-Browser.st

+ 95 - 10
src/Helios-Browser.js

@@ -3522,11 +3522,11 @@ selector: "renderInheritanceOn:",
 protocol: "rendering",
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["html"],
-source: "renderInheritanceOn: html\x0a\x09html div \x09\x0a\x09\x09class: 'inheritance';\x0a\x09\x09with: [\x0a\x09\x09\x09self selectedItem isBehavior\x0a\x09\x09\x09\x09ifFalse: [ html with: 'Trait' ]\x0a\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09html with: 'Subclass of '.\x0a\x09\x09\x09\x09\x09self selectedItem superclass \x0a\x09\x09\x09\x09\x09\x09ifNil: [ html em with: 'nil' ]\x0a\x09\x09\x09\x09\x09\x09ifNotNil: [ :sclass | self renderClassLinkTo: sclass on: html ] ] ];\x0a\x09\x09with: '. ';\x0a\x09\x09with: [ self selectedItem traitComposition ifNotEmpty: [ :composition |\x0a\x09\x09\x09html with: 'Uses '.\x0a\x09\x09\x09composition\x0a\x09\x09\x09\x09do: [ :each | self renderClassLinkTo: each trait on: html ]\x0a\x09\x09\x09\x09separatedBy: [ html with: ', ' ].\x0a\x09\x09\x09html with: '. ' ] ]\x0a\x09\x09",
+source: "renderInheritanceOn: html\x0a\x09html div \x09\x0a\x09\x09class: 'inheritance';\x0a\x09\x09with: [\x0a\x09\x09\x09self selectedItem isBehavior\x0a\x09\x09\x09\x09ifFalse: [ html with: 'Trait' ]\x0a\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09html with: 'Subclass of '.\x0a\x09\x09\x09\x09\x09self selectedItem superclass \x0a\x09\x09\x09\x09\x09\x09ifNil: [ html em with: 'nil' ]\x0a\x09\x09\x09\x09\x09\x09ifNotNil: [ :sclass | self renderClassLinkTo: sclass on: html ] ] ];\x0a\x09\x09with: '. ';\x0a\x09\x09with: [ self selectedItem traitComposition ifNotEmpty: [ :composition |\x0a\x09\x09\x09html with: 'Uses '.\x0a\x09\x09\x09composition\x0a\x09\x09\x09\x09do: [ :each | self renderClassLinkTo: each trait on: html ]\x0a\x09\x09\x09\x09separatedBy: [ html with: ', ' ].\x0a\x09\x09\x09html with: '. ' ] ];\x0a\x09\x09with: [ self selectedItem isBehavior ifTrue: [\x0a\x09\x09\x09self selectedItem theMetaClass traitComposition ifNotEmpty: [ :composition |\x0a\x09\x09\x09\x09html with: 'Class-side uses '.\x0a\x09\x09\x09\x09composition\x0a\x09\x09\x09\x09\x09do: [ :each | self renderClassLinkTo: each trait on: html ]\x0a\x09\x09\x09\x09\x09separatedBy: [ html with: ', ' ].\x0a\x09\x09\x09\x09html with: '. ' ] ] ]\x0a\x09\x09",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
-messageSends: ["class:", "div", "with:", "ifFalse:ifTrue:", "isBehavior", "selectedItem", "ifNil:ifNotNil:", "superclass", "em", "renderClassLinkTo:on:", "ifNotEmpty:", "traitComposition", "do:separatedBy:", "trait"]
+messageSends: ["class:", "div", "with:", "ifFalse:ifTrue:", "isBehavior", "selectedItem", "ifNil:ifNotNil:", "superclass", "em", "renderClassLinkTo:on:", "ifNotEmpty:", "traitComposition", "do:separatedBy:", "trait", "ifTrue:", "theMetaClass"]
 }, function ($methodClass){ return function (html){
 var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -3539,11 +3539,15 @@ $recv($1)._class_("inheritance");
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-if($core.assert($recv([$self._selectedItem()
+if($core.assert([$recv([$self._selectedItem()
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["selectedItem"]=1
 //>>excludeEnd("ctx");
-][0])._isBehavior())){
+][0])._isBehavior()
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx2.sendIdx["isBehavior"]=1
+//>>excludeEnd("ctx");
+][0])){
 [$recv(html)._with_("Subclass of ")
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 ,$ctx2.sendIdx["with:"]=3
@@ -3593,7 +3597,15 @@ return [$recv(html)._with_("Trait")
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-return $recv($recv($self._selectedItem())._traitComposition())._ifNotEmpty_((function(composition){
+return [$recv([$recv([$self._selectedItem()
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx2.sendIdx["selectedItem"]=3
+//>>excludeEnd("ctx");
+][0])._traitComposition()
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx2.sendIdx["traitComposition"]=1
+//>>excludeEnd("ctx");
+][0])._ifNotEmpty_((function(composition){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx3) {
 //>>excludeEnd("ctx");
@@ -3602,11 +3614,19 @@ return $core.withContext(function($ctx3) {
 ,$ctx3.sendIdx["with:"]=7
 //>>excludeEnd("ctx");
 ][0];
-$recv(composition)._do_separatedBy_((function(each){
+[$recv(composition)._do_separatedBy_((function(each){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx4) {
 //>>excludeEnd("ctx");
-return $self._renderClassLinkTo_on_($recv(each)._trait(),html);
+return [$self._renderClassLinkTo_on_([$recv(each)._trait()
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx4.sendIdx["trait"]=1
+//>>excludeEnd("ctx");
+][0],html)
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx4.sendIdx["renderClassLinkTo:on:"]=2
+//>>excludeEnd("ctx");
+][0];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,8)});
 //>>excludeEnd("ctx");
@@ -3622,12 +3642,24 @@ return [$recv(html)._with_(", ")
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx4) {$ctx4.fillBlock({},$ctx3,9)});
 //>>excludeEnd("ctx");
-}));
-return $recv(html)._with_(". ");
+}))
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx3.sendIdx["do:separatedBy:"]=1
+//>>excludeEnd("ctx");
+][0];
+return [$recv(html)._with_(". ")
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx3.sendIdx["with:"]=9
+//>>excludeEnd("ctx");
+][0];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx3) {$ctx3.fillBlock({composition:composition},$ctx2,7)});
 //>>excludeEnd("ctx");
-}));
+}))
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx2.sendIdx["ifNotEmpty:"]=1
+//>>excludeEnd("ctx");
+][0];
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
 //>>excludeEnd("ctx");
@@ -3636,6 +3668,59 @@ return $recv(html)._with_(". ");
 ,$ctx1.sendIdx["with:"]=6
 //>>excludeEnd("ctx");
 ][0];
+[$recv($1)._with_((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+if($core.assert($recv([$self._selectedItem()
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx2.sendIdx["selectedItem"]=4
+//>>excludeEnd("ctx");
+][0])._isBehavior())){
+return $recv($recv($recv($self._selectedItem())._theMetaClass())._traitComposition())._ifNotEmpty_((function(composition){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
+[$recv(html)._with_("Class-side uses ")
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx3.sendIdx["with:"]=11
+//>>excludeEnd("ctx");
+][0];
+$recv(composition)._do_separatedBy_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
+return $self._renderClassLinkTo_on_($recv(each)._trait(),html);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,13)});
+//>>excludeEnd("ctx");
+}),(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx4) {
+//>>excludeEnd("ctx");
+return [$recv(html)._with_(", ")
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx4.sendIdx["with:"]=12
+//>>excludeEnd("ctx");
+][0];
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx4) {$ctx4.fillBlock({},$ctx3,14)});
+//>>excludeEnd("ctx");
+}));
+return $recv(html)._with_(". ");
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({composition:composition},$ctx2,12)});
+//>>excludeEnd("ctx");
+}));
+}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)});
+//>>excludeEnd("ctx");
+}))
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+,$ctx1.sendIdx["with:"]=10
+//>>excludeEnd("ctx");
+][0];
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"renderInheritanceOn:",{html:html})});

+ 8 - 1
src/Helios-Browser.st

@@ -925,7 +925,14 @@ renderInheritanceOn: html
 			composition
 				do: [ :each | self renderClassLinkTo: each trait on: html ]
 				separatedBy: [ html with: ', ' ].
-			html with: '. ' ] ]
+			html with: '. ' ] ];
+		with: [ self selectedItem isBehavior ifTrue: [
+			self selectedItem theMetaClass traitComposition ifNotEmpty: [ :composition |
+				html with: 'Class-side uses '.
+				composition
+					do: [ :each | self renderClassLinkTo: each trait on: html ]
+					separatedBy: [ html with: ', ' ].
+				html with: '. ' ] ] ]
 ! !
 
 HLToolListWidget subclass: #HLMethodsListWidget