Hi.

I glad to present one class package which introduces reusable mechanism for
first class annotations.

The project can be found on github
https://github.com/dionisiydk/ClassMetaAnnotation.
And I tried to describe why it is needed in my blog
http://dionisiydk.blogspot.fr/2017/09/class-meta-annotations.html.

And here is overview:

Every annotation should be subclass of ClassMetaAnnotation. To attach it to
class you create new class side method which will return an instance of the
annotation. Method should be marked with pragma #classMetaAnnotation:


MyClass class>>specialAnnotation

<classMetaAnnotation>

^MySpecialAnnotation new


To query annotations from system there are two methods:

1) You can ask concrete annotation class for all declared instances:

MySpecialAnnotation declaredInstances

2) You can ask given class for all attached annotations:

MyClass metaAnnotations

Every annotation includes information about annotated class and the
selector of declaring method.
All annotations are cached. So it is cheap to query them. There are extra
messages to enumerate annotations using block.

Now let's discuss it. I think it can be good addition for the Pharo 7.
Especially that it is very small code.

Also I would like to thank Marcus who helps me realize this concept in
Commander and Calypso which I start simplify with this library.

Best regards,
Denis

Reply via email to