Login  Register

Re: Clickable class side example and initialize methods in Pharo 4.0

Posted by Torsten Bergmann on Oct 22, 2014; 10:36am
URL: https://forum.world.st/Clickable-class-side-example-and-initialize-methods-in-Pharo-4-0-tp4785865p4785926.html

Hi Tudor,

that should be easy now: look at CompiledMethod>>#isExampleMethod which can be adopted as needed.

Checking for the <example> pragma could be done this way:

   self pragmas anySatisfy: [:pragma | pragma keyword = #example ]

but we should think first if this is enough.

I already proposed to not only annotate with a pragma <example> but additionally give a category.
Like this:

   <example: 'Graphics'>
   <example: 'Network'>

This way we can easily build an example browser for our users where people can go through
their point of interest and browse the examples.

Maybe we should also rethink pragmas (in Pharo 5.0?) in general to be more Smalltalk
like:
 
   <Example category: 'Graphics'>

where Example is a real class in the system (!). One can even make it more explicit
then

   <ExampleCategory graphics>

with ExampleCategory(class)>>graphics returning a translateable string. People can add
own categories and one easily knows about already available ones.


Now that classes can have properties in Pharo 4.0 already I would like to see a unification
for methods and classes here (with the general concept of an "Annotation" in our metamodel).

In my opinion a method pragma is just a special form of annotating a method.

And annotating classes is usefull as well (for instance you want to annotate a class with
the appropriate Table name in an ORM framework, ...)

A comment (in a method or in a class) is also nothing more than a special annotation.
A class/method category is also an annotation. If unified a method or a class could
be in one or more categories. Even a break point for an expression is IMHO just an
annotation.  

Bye
T.


Gesendet: Mittwoch, 22. Oktober 2014 um 10:43 Uhr
Von: "Tudor Girba" <[hidden email]>
An: "Pharo Development List" <[hidden email]>
Cc: "Any question about pharo is welcome" <[hidden email]>
Betreff: Re: [Pharo-dev] Clickable class side example and initialize methods in Pharo 4.0

Hi Torsten,
 
Thanks for this. This is indeed the way to go.
 
Just to let you know, the example infrastructure is also being developed in the context of GT, so we have a healthy interest overlap which is great. Only in our case, the discovery of the example happens through an <example> pragma. Would it be possible to change your slice to use this pragma instead of the example* convention?
 
Cheers,
Doru
 
 
 
On Wed, Oct 22, 2014 at 9:19 AM, Torsten Bergmann <[hidden email]> wrote:One addition I implemented for Nautilus is that one can run examples directly
in the browser just by clicking on class side example methods icons.

See https://pharo.fogbugz.com/f/cases/13892/Example-methods-should-be-runnable-in-Nautilus[https://pharo.fogbugz.com/f/cases/13892/Example-methods-should-be-runnable-in-Nautilus]
for a picture.


SO PLEASE: WHEN YOU PROVIDE EXAMPLES IN CLASSES PLEASE PUT THEM ON THE CLASS SIDE
           AND LET THE SELECTOR START WITH "example".

This way people will easily see that it is an example and can run them. Additionally it
would help to put them into a category like "examples". So be a good citized and
provide not only class comments but also examples for others to study.


Side note:
==========
It is also possible to click on the icon of class side initialize methods so the
class get reinitialized (after a confirmation to avoid false clicking).

https://pharo.fogbugz.com/f/cases/13894/Class-side-initialize-methods-should-be-runnable-in-Nautilus[https://pharo.fogbugz.com/f/cases/13894/Class-side-initialize-methods-should-be-runnable-in-Nautilus]

Both issues are already integrated.
  
 --
www.tudorgirba.com[http://www.tudorgirba.com]
 
"Every thing has its own flow"