I wrote this because I want my data model classes to have one set of
#description's to model their data structure and another set of
#settings to model the view/filter settings that are available for
Usually I tag my descriptions to do that, e.g. #beEditable,
#beSearchable, #beSetting, etc. This allows to easily define
(overlapping) sub-sets of all the existing descriptions.
I dont know what the best way to achieve this with magritte would
but I figured being able to have multiple sets of descriptions for
different unrelated purposes could be very useful.
Yes, have a look at the senders and implementors in Pier of
#beEditable, #isEditable, #beSearchable, #isSearchable, ...
As an implementation detail, it might be useful if the
MADescriptionBuilder 'Cache' was a class instance var rather than a
The idea was only to have one builder active in the image.
Object>>#description uses this default builder. Subclasses might
override #description to use a different one, if necessary.
Notes: Includes a performance enhancement to double speed of
description building. (selectors of Object are ignored)
I have some projects that add descriptions to Object, so this
optimization would break certain things.