Le 22/10/2014 21:14, stepharo a écrit :
I agree with Thierry but I disagree with Alex :)
What is cool is that when you browse a widget class that you get all the
examples for this class.

I use browse class refs for that. Works on average pretty well; if it doesn't I throw away the code and reuse something else ;)

Thierry


Stef
I am also not a big fan of using pragmas. To me, it looks like an ad
hoc approach to have examples close to the class. In the same spirit:
Why not having tests in the same class? Would it not be cool? Of
course not.
In Roassal we have a class for examples (similar to TestCase).

Alexandre

Le 22-10-2014 à 14:51, Thierry Goubier <thierry.goub...@gmail.com> a
écrit :

Hi all,

by principle, I'd be against extending so much the pragmas... from a
design point of view they look like #defines and macros, that is an
additional language to learn, without a correct support of the tools
(no debug on pragmas, non-obvious behavior triggers, search for
pragma users difficult, not documented).

Alexandre, your idea of infering properties from the source code
looks a lot more interesting (and with a lot more potential).

Thierry

Le 22/10/2014 19:38, Alexandre Bergel a écrit :
Hi!

I have doubt that #example: will be enough in the case of Roassal.
Having a code example browser is indeed important and having a
descent way to search for the examples is also important. I am
thinking to stick to #example and infer some categories from the
source code (e.g., if the method contains a Zinc class, then it may
be categorized in network).


Cheers,
Alexandre

Le 22-10-2014 à 7:38, Torsten Bergmann <asta...@gmx.de> a écrit :

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" <tu...@tudorgirba.com>
An: "Pharo Development List" <pharo-...@lists.pharo.org>
Cc: "Any question about pharo is welcome"
<pharo-users@lists.pharo.org>
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 <asta...@gmx.de>
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"








Reply via email to