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:
* All code is in the repository:
http://source.lukas-renggli.ch/magritte2unstable
* 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