Highlights:
* Magritte descriptions now work on the instance side
* /magritte/editor works with instance side descriptions
* Refactoring support to move descriptions to instance side
Details:
* Taking feedback from previous mail pragmas are now named: <magritteDescription>, <magritteDescription: #extensionMethod>, <magritteContainer> respectively for descriptions, descriptions extensions and description containers (description containers extensions do exist, they use the same pragma <magritteContainer> but take the container as a parameter).
* All tests are green, and the /magritte/editor works.
* The refactoring supports works at the method, class and class-category/package level. It adds the appropriate pragma for descriptions, description extensions and container descriptions. The methods keep the same category (this is to avoid package extensions methods inadvertantly being reclassified). I attempted renaming #descriptionAddress to #addressDescription but it complicated description extensions so I decided to keep things simple. The refactoring support can be loaded from Magritte-Tools. Before you try the refactoring, read the caveats below.
Caveats:
* I've ported but haven't tested the Morphic bindings. Be great if someone who knows the Morphic bindings can test.
* The refactoring will not add 'class' for class-side selectors. For example the following description:
descriptionGroup
^ MAStringDescription new
accessor: #group;
default: self defaultGroup;
label: 'Group';
priority: 105;
yourself
will be refactored to:
descriptionGroup
<magritteDescription>
^ MAStringDescription new
accessor: #group;
default: self defaultGroup;
label: 'Group';
priority: 105;
yourself
However you'll have to manually add a 'class' to 'self defaultGroup' to make it 'self class defaultGroup' .... unless someone knows how to fix this?...
* all instance side #description & #description: selectors within MADescription and MAMemento hierarchy have been renamed to #magritteDescription & #magritteDescription: respectively. I've tried to catch all senders of #description and change them to #magritteDescription. However instance creation methods have kept their original naming for example MAMemento class>>model:description:
Next Steps:
Attempt to refactor Pier and fix bugs based on feedback.... over to you....
Nick