Wow!!!
Impressive!!!
Alexandre
> <Inspector on an OrderedCollection (an O...ls)).png>
On Jan 1, 2014, at 8:31 PM, Tudor Girba <tudor@tudorgirba.com> wrote:
> Excellent! That is exactly the spirit we should promote for developing in Pharo. I think this is an area where Moose can contribute greatly. We really have a shot at setting a new standard for how code should be developed.
>
> I will publish a longer blog post on the issue, but in the meantime, here is a quick reply. Actually, you do not need to load the whole project into a FAMIX model. You can do it simpler now directly with the Pharo objects.
>
> Inspect this:
>
> (RPackageOrganizer default packageNamed: 'Graph-ET')
> allMethodReferences select: [ :each |
> each method literalStrings anySatisfy: [ :literal |
> literal notNil and: [literal beginsWith: 'RO' ] ] ]
>
> You get a simple list of RGMethodDefinitions that you can go through like you would do in a to do.
>
> The cool thing is that you can preview the source code in the inspector, and you can even modify the code right there. Essentially, you get a highly focused code browser (see attached).
>
>> <Inspector on an OrderedCollection (an O...ls)) - roassal.png>
> Of course, you can also create a visualization, if you want.
>
> | view |
> view := ROMondrianViewBuilder new.
> view
> nodes: (RPackageOrganizer default packageNamed: 'Graph-ET') classes
> forEach: [:cls |
> view shape rectangle
> if: [ :m |
> m method literalStrings anySatisfy: [ :literal |
> literal notNil and: [literal beginsWith: 'RO' ]] ]
> fillColor: Color red.
> view nodes: ((cls methods select: [:m | m package name beginsWith: 'Graph-ET']) collect: #asRingDefinition).
> view gridLayout ].
> view edgesFrom: #superclass.
> view narrowTreeLayout.
> view
>
> If you inspect the view and click on a method, guess what :)
>
> <Screen Shot 2013-12-31 at 6.00.10 PM.png>>
> There are things to improve here. One thing I would want is for the list of items to update when I am accepting the code. Another thing is that we should make Ring more concise.
>
> Nevertheless, it is already exciting. Don't you think so?
>
> Cheers,
> Doru
>
>
>
>
>
> On Tue, Dec 31, 2013 at 10:12 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
> Hi!
>
> Just to share a small use I had of Moose.
>
> I am working on Roassal2. Roassal2 will be largely compatible with Roassal1. I am trying to make GraphET use Roassal2, and I need to know where Roassal is actually used by GraphET. Moose is ideal for this.
>
> I opened the moose panel, imported GraphET and type the following script in a Roassal easel opened on a class group:
> -=-=-=-=-=-=-=-=-=-=-=-=
> view shape rectangle
> if: #isStub fillColor: Color veryVeryLightGray;
> if: #isSUnitTestCase borderColor: Color green.
> view nodes: classGroup forEach: [ :cls |
> view shape rectangle
> if: [ :m | (m queryAllOutgoingAssociations atTypeScope select: [:c | c name beginsWith: 'RO' ] ) notEmpty ] fillColor: Color red;
> if: [ :m | (m queryAllOutgoingAssociations atTypeScope select: [:c | c name beginsWith: 'RT' ] ) notEmpty ] fillColor: Color blue.
> view interaction
> popupText: [ :m | ((m queryAllOutgoingAssociations atTypeScope select: [:c | c name beginsWith: 'RO' ]) inject: '' into: [ :s :e | s, ' ', e name ]), String cr, '-----', String cr, m sourceText ];
> action: #inspect;
> on: ROMouseClick do: [:event | event model browseSource ].
> view nodes: cls methods.
> view gridLayout.
> ].
> view edgesFrom: #superclass.
> view treeLayout
> -=-=-=-=-=-=-=-=-=-=-=-=
>
> It gives a pictures as the following one:
>> <Screen Shot 2013-12-31 at 6.07.05 PM.png>
> large squares are classes
> link are inheritance: superclass is above its subclasses
> Inner squares are methods
> red square are methods of GraphET that reference to Roassal1 classes
> blue square are methods that have been migrated to Roassal2.
> Gray classes are stub classes
>
> A popup window details what is the reference. E.g.,
>
> This is a popup I get by having the mouse above a method initialize. The reference to Roassal is because of the use of “ROElement”. I can click on the class to open a code browser on it. I can then modify the reference of ROElement to RTElement...
>
> Happy new year!
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev@iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
> _______________________________________________
> Moose-dev mailing list
> Moose-dev@iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev