Hi!
Thanks to Milton and Doru, we have an UML builder in Roassal.
Here is a screenshot:
I have this example:
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.= | b | b := RTUMLClassBuilder new. b methodShape label if: [ :method | method selector beginsWith: 'init' ] color: Color green; if: [ :method | method selector beginsWith: 'with' ] color: Color red. b attributeShape label if: [ :attribute | attribute beginsWith: 'a' ] color: Color blue. b addObjects: RTShape withAllSubclasses. b treeLayout; open.
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=
It also works with any arbitrary representation of classes: .=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.= | objects b | objects := { { 'MyClass' . { #iv1 . #iv2 } . { #method1 . #method2 . #method3 }} . { 'MyClass2' . { #iv2 . #iv2 } . { #method1 . #method2 . #method4 }} }.
b := RTUMLClassBuilder new. b attributeShape label if: [ :a | a = #iv1 ] color: Color red. b addObjects: objects; classname: #first; instanceVariables: #second; methodsNames: #third; methodselector: #yourself; attributeselector: #yourself; superclass: nil; open .=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=
Thanks Milton!
Alexandre