Skip to content

Commit

Permalink
add exporter of MermaidUML in roasaal
Browse files Browse the repository at this point in the history
  • Loading branch information
badetitou committed Sep 8, 2023
1 parent 626666e commit 5fd317c
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/BaselineOfMermaidPharo/BaselineOfMermaidPharo.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ BaselineOfMermaidPharo >> definePackages: spec [
with: [ spec requires: #( 'CApi' ) ];
package: 'MermaidPharo-Extension-Tests'
with: [ spec requires: #( 'MermaidPharo-Extension' ) ];
package: 'MermaidPharo-ClassDiagram';
"Class Diagram"package: 'MermaidPharo-ClassDiagram';
package: 'MermaidPharo-Writter';
package: 'MermaidPharo-Writter-Tests'
with: [ spec requires: #( 'MermaidPharo-Writter' ) ];
Expand All @@ -56,6 +56,10 @@ BaselineOfMermaidPharo >> definePackages: spec [
with: [ spec requires: #( 'Pharo2Mermaid' ) ];
package: 'Moose2Mermaid'.

"Class diagram roassal"
spec
package: 'MermaidPharo-Roassal-ClassDiagram'
with: [ spec requires: #( 'MermaidPharo-Writter' ) ].
"Flowchart"
spec
package: 'MermaidPharo-Flowchart'
Expand Down
2 changes: 1 addition & 1 deletion src/MermaidPharo-ClassDiagram/MeClassDiagram.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Class {

{ #category : #visiting }
MeClassDiagram >> accept: mermaidWritter [
mermaidWritter visitClassDiagram: self
^ mermaidWritter visitClassDiagram: self
]

{ #category : #accessing }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
"
This package includes a backend writter to export MermaidJS ClassDiagram into a Roassal visualisation
"
Class {
#name : #ManifestMermaidPharoRoassalClassDiagram,
#superclass : #PackageManifest,
#category : #'MermaidPharo-Roassal-ClassDiagram-Manifest'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
"
My entrypoint is `visitClassDiagram: aClassDiagram`.
I provide a canvas with the rossal class diagram
"
Class {
#name : #MeRSClassDiagramExporter,
#superclass : #MeWritterVisitor,
#instVars : [
'canvas',
'builder',
'diagram'
],
#category : #'MermaidPharo-Roassal-ClassDiagram-Manifest'
}

{ #category : #visiting }
MeRSClassDiagramExporter >> rsClassDescriptor [

^ RSUMLClassDescriptor new
classname: #name;
instVars: [ :cls | cls attributes ];
methods: [ :meClass | meClass methods ];
isAbstract: false;
superclass: [ :meClass |
(diagram relations select: [ :rel |
rel toClass = meClass and: [
rel fromRelationType isKindOf: MeCDInheritanceRelationType ] ])
ifNotEmpty: [ :inheritanceRelations |
inheritanceRelations anyOne fromClass ]
ifEmpty: [ nil ] ];
methodsLimit: SmallInteger maxVal
]

{ #category : #visiting }
MeRSClassDiagramExporter >> visitClass: aMeClass [
builder classes add: aMeClass

]

{ #category : #visiting }
MeRSClassDiagramExporter >> visitClassDiagram: aClassDiagram [

diagram := aClassDiagram.
canvas := RSCanvas new.
builder := RSUMLClassBuilder new.
builder modelDescriptor: self rsClassDescriptor.
aClassDiagram classes ifNotEmpty: [ :classes |.
builder classes: OrderedCollection new.
classes do: [ :class | class accept: self ] ].
builder build.
builder renderIn: canvas.
canvas zoomToFit.
canvas @ RSCanvasController.
^ canvas
]
1 change: 1 addition & 0 deletions src/MermaidPharo-Roassal-ClassDiagram/package.st
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Package { #name : #'MermaidPharo-Roassal-ClassDiagram' }

0 comments on commit 5fd317c

Please sign in to comment.