Login  Register

Re: [Ann] Class meta annotations

Posted by Stephane Ducasse-3 on Sep 28, 2017; 7:12pm
URL: https://forum.world.st/Ann-Class-meta-annotations-tp4971966p4973623.html

I would not use meta because you would not write annotationAnnotations :)
and annotations is meta by its name.

classAnnotation is much better than metaAnnotation 

Stef


On Thu, Sep 28, 2017 at 5:40 PM, Denis Kudriashov <[hidden email]> wrote:
So I renamed it to ClassAnnotation with all related names.

But I keep meta prefix in #metaAnnotations Class extension to avoid general name:
MyClass metaAnnotations   

You can check updated readme for details https://github.com/dionisiydk/ClassAnnotation

2017-09-26 17:31 GMT+02:00 Stephane Ducasse <[hidden email]>:
;)

On Tue, Sep 26, 2017 at 1:28 PM, Ben Coman <[hidden email]> wrote:
Shhh... The first rule of meta-club is we don't talk about meta-club.


cheers -ben


On Mon, Sep 25, 2017 at 11:09 PM, Guillermo Polito <[hidden email]> wrote:
Why calling them meta-annotation and not just annotation? Annotations are in general already meta :)

On Mon, Sep 25, 2017 at 5:01 PM, Denis Kudriashov <[hidden email]> wrote:
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



--

   

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - http://www.cnrs.fr


Web: http://guillep.github.io

Phone: <a href="tel:+33%206%2052%2070%2066%2013" value="+33652706613" target="_blank">+33 06 52 70 66 13