2017-09-25 17:09 GMT+02:00 Guillermo Polito <[email protected]>:

> Why calling them meta-annotation and not just annotation? Annotations are
> in general already meta :)
>

First of all we can rename it.

We discussed name with Marcus. And our feeling was that simple "class
annotation" name is a bit collide with "class properties" which we also
have. So we added extra word to the name but maybe it not makes any sense.

Also we thought about ClassPragma name. But it is possible that with new
class definition we will be able to annotate classes just in place like
methods. Also using the name different from pragma is good (or feels good)
to get some sign that it uses different mechanizm.


>
> On Mon, Sep 25, 2017 at 5:01 PM, Denis Kudriashov <[email protected]>
> 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/dion
>> isiydk/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
> <http://www.cnrs.fr>*
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>

Reply via email to