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