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" > >