If you can write step by step instruction what to show, I can do it. Right now 
all my time is used to prepare my own presentation, so I can't do it myself.

uko


On 27 бер. 2013, at 18:41, Denis Kudriashov <[email protected]> wrote:

> 2013/3/27 Tudor Girba <[email protected]>
> Perhaps Mocketry would be a good topic for a "Show us your projects" session. 
> Then we can try to go into a couple of more details.
> 
> 
> Unfortunately I can't participate conference this year
>  
> Cheers,
> Doru
> 
> 
> On Mar 27, 2013, at 12:42 AM, Yuriy Tymchuk <[email protected]> wrote:
> 
> > Sounds good to me.
> >
> > On 26 бер. 2013, at 23:00, Camillo Bruni <[email protected]> wrote:
> >
> >>
> >> On 2013-03-26, at 19:45, Denis Kudriashov <[email protected]> wrote:
> >>
> >>> 2013/3/26 Yuriy Tymchuk <[email protected]>
> >>>
> >>>> Ok, and what if we will change behavior a bit so if no definitions were
> >>>> found it will send the incoming message to enclosed object? This way it
> >>>> will work like phexample but will also allow to define some fancy DSL.
> >>>>
> >>>
> >>> We can copy all phexample syntax methods into single class inside
> >>> StateSpecs package but replace implementation with pragmas approach. So
> >>> anybody can browse implementors like usual and it will not required any
> >>> special cases.
> >>>
> >>> How I can influence your interest, guys? I can provide cleaning, comments,
> >>> improvements to StateSpecs. I opened for your requirements.
> >>> Phexample become quite popular and can be part of Pharo sometimes.
> >>> Mocketry/StateSpecs used by people too.
> >>> It would be bad if this packages can't be used together.
> >>
> >> sorry for starting the whole rant :) I am veery busy at least until 
> >> tomorrow
> >>
> >> Yuriy we can discuss that after tomorrow?
> >> I would as well appreciate some common solution to avoid the selector 
> >> clash.
> >>
> >>
> >>
> >>>> On 26 бер. 2013, at 07:46, Denis Kudriashov <[email protected]> wrote:
> >>>>
> >>>> Hello
> >>>> 2013/3/26 Camillo Bruni <[email protected]>
> >>>>
> >>>>> Definitely StateSpec looks more mature and can be used in a more 
> >>>>> flexible
> >>>>> way.
> >>>>> But I am not a big fan of the pragma magic. Why?
> >>>>> It breaks all tools for me :/. If I see a message send I want to be able
> >>>>> to:
> >>>>> - browse it, so I can see who implements it?
> >>>>> - debug it directly to get to the real method.
> >>>>>
> >>>>> SateSpec does indeed help writing readable code by allowing almost
> >>>>> grammatically
> >>>>> correct sentences. However I don't think this is the way to program. I 
> >>>>> am
> >>>>> a big
> >>>>> fan of stupid english:
> >>>>>
> >>>>> `foo should isKindOf: Bar` vs. `foo should be an instance of: Bar`
> >>>>>
> >>>>> If I want to figure out how the first one works, I can simply browse the
> >>>>> implementors of #should and/or #isKindOf: where is the StateSpec version
> >>>>> I am
> >>>>> lost. I have to rely on "contains string literal" to get the sources, 
> >>>>> for
> >>>>> me
> >>>>> that is very strange.
> >>>>>
> >>>>
> >>>> I think main thing you want is easilly explore all available should
> >>>> syntax. And StateSpecs can be easilly adopted for such task. We can just
> >>>> move all methods with syntax pragmas to single class. So you can open 
> >>>> this
> >>>> class and see what available.
> >>>>
> >>>> To get implementors of some "should expression" you should use senders
> >>>> search of syntax words instead of implementors. Syntax words in 
> >>>> StateSpecs
> >>>> is just method literals ( <syntax: #(be an instance of:)>, #() is just
> >>>> array of symbols).
> >>>>
> >>>> Interesting that StateSpecs has more explicit syntax system. How you can
> >>>> explore in Phexample expression:
> >>>>
> >>>> object should be true
> >>>> ?
> >>>>
> >>>> You have separate PheMatcher>>be and PheMatcher>>true methods and there 
> >>>> is
> >>>> no places in code where you can see that this messages can and should be
> >>>> used together.
> >>>> But with StateSpecs you should put pragma with explicit expression like:
> >>>>
> >>>> Equal>>true: anObject
> >>>>  <syntax: #(be true)>
> >>>>  ^self return: (IdentitySpec pattern: true)
> >>>>
> >>>> So with StateSpecs you have full syntax expression at one place which can
> >>>> be easy explored.
> >>>> And for example to support Phexample mesage #beTrue you should just add
> >>>> another pragma:
> >>>>
> >>>> Equal>>true: anObject
> >>>>  <syntax: #(be true)>
> >>>>  <syntax: #(beTrue)>
> >>>>  ^self return: (IdentitySpec pattern: true)
> >>>>
> >>>> So with Phexample you can browse implementors of "single word should
> >>>> expressions". But with Phexample if you browse implementors of #be like
> >>>> messages you have no idea how it can be used.
> >>>> In StateSpecs you should use senders. And with StateSpecs if you browse
> >>>> "any syntax word implementors" by senders seach you will see all possible
> >>>> usage cases. And if I move all methods with syntax pragmas to single 
> >>>> class
> >>>> you can easilly see all possible expressions in one place.
> >>>>
> >>>> `foo should isKindOf: Bar` vs. `foo should be an instance of: Bar`
> >>>>>
> >>>>
> >>>> With StateSpecs it should be
> >>>>
> >>>> foo should be a kind of: Bar
> >>>>
> >>>> And as I said before It is simple task to support all Phexample
> >>>> expressions by StateSpecs pragmas
> >>>>
> >>>> Best regards,
> >>>> Denis
> >>>>
> >>>>
> >>>>
> >>
> >>
> >
> >
> 
> --
> www.tudorgirba.com
> 
> "Sometimes the best solution is not the best solution."
> 
> 
> 

Reply via email to