The problem is that a statement like that cannot be parsed.
retreive svn, 'url'

will work.


On Sat, Nov 8, 2008 at 12:58 PM, dagda1 <[EMAIL PROTECTED]> wrote:

>
> Hi,
>
> I am trying to parse the following line:
>
> retrieve svn "https://svnserver/trunk";
>
> But cannot get the compiler to recognise the expressions.
>
> The only way I can get it to work is to make svn a
> MethodInvocationExpression like this:
>
> retrieve svn("https://svnserver/trunk";)
>
> and then get the name of the method and the StringLiteralExpression
> from the Arguments.
>
> Is there another way i can tackle this?
>
> Cheers
>
> Paul
>
> On 7 Nov, 14:21, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
> > protected void SetBuildTargets(string[] tasksAction)
> > {
> >     foreach(var task in tasksAction)
> >         BuildTasks.Add(task);
> >
> > }
> >
> > [Meta]
> > public static Expression tasks(params ReferenceExpression[] expressions)
> > {
> >
> >     var arrayExpression = new ArrayLiteralExpression();
> >
> >     for (var i = 0; i < expressions.Length; i++)
> >         arrayExpression.Items.Add(new
> > StringLiteralExpression(expressions[i].Name));
> >     return new MethodInvocationExpression(
> >         new ReferenceExpression("SetBuildTargets"),
> >         arrayExpression
> >     );
> >
> >
> >
> > }
> > On Fri, Nov 7, 2008 at 4:13 PM, Paul Cowan <[EMAIL PROTECTED]> wrote:
> > > but is there a reason you had to use the lambda?
> >
> > > How could I have done that?  Meta methods are static.
> >
> > > I am interested because this is my first real stab at anything like
> this.
> >
> > > Cheers
> >
> > > 2008/11/7 Ayende Rahien <[EMAIL PROTECTED]>
> >
> > >> Also works but is there a reason you had to use the lambda? Why not
> just
> > >> pass the string array directly?
> >
> > >> On Fri, Nov 7, 2008 at 4:08 PM, Paul Cowan <[EMAIL PROTECTED]>
> wrote:
> >
> > >>> I ended up fixing it this way:
> >
> > >>> protected void SetBuildTargets(Func<string[]> tasksAction)
> > >>> {
> > >>>     foreach(var task in tasksAction())
> > >>>         BuildTasks.Add(task);
> > >>> }
> >
> > >>> [Meta]
> > >>> public static Expression tasks(params ReferenceExpression[]
> expressions)
> > >>> {
> > >>>     var blockExpression = new BlockExpression();
> >
> > >>>     var arrayExpression = new ArrayLiteralExpression();
> >
> > >>>     for (var i = 0; i < expressions.Length; i++)
> > >>>         arrayExpression.Items.Add(new
> > >>> StringLiteralExpression(expressions[i].Name));
> >
> > >>>     blockExpression.Body.Add(new ReturnStatement(arrayExpression));
> >
> > >>>     return new MethodInvocationExpression(
> > >>>         new ReferenceExpression("SetBuildTargets"),
> > >>>         blockExpression
> > >>>     );
> > >>> }
> >
> > >>> 2008/11/7 Ayende Rahien <[EMAIL PROTECTED]>
> >
> > >>> As for documentation.The best resource for that are chapter 6 &
> chapter
> > >>>> 12.
> >
> > >>>> On Fri, Nov 7, 2008 at 1:55 PM, dagda1 <[EMAIL PROTECTED]> wrote:
> >
> > >>>>> >> You need to create a meta method that accepts a params of
> > >>>>>  ReferenceExpression.this will allow you to skip the strings.
> >
> > >>>>> I can get this working for one task expression
> >
> > >>>>> Like this for the DSL:
> >
> > >>>>> install "horn":
> > >>>>>        description "This is a description of horn"
> > >>>>>        svn "https://svnserver/trunk";
> > >>>>>        #buildfile default.build
> > >>>>>        tasks one
> >
> > >>>>> And this for the meta method:
> >
> > >>>>> [Meta]
> > >>>>> public static Expression tasks(ReferenceExpression expression)
> > >>>>> {
> > >>>>>    var condition = new BlockExpression();
> >
> > >>>>>    var taskExpression = new
> StringLiteralExpression(expression.Name);
> >
> > >>>>>    condition.Body.Add(new ReturnStatement(taskExpression));
> >
> > >>>>>    return new MethodInvocationExpression(
> > >>>>>        new ReferenceExpression("SetBuildTargets"),
> > >>>>>        condition
> > >>>>>    );
> > >>>>> }
> >
> > >>>>> I cannot work out how to handle an array of ReferenceExpressions as
> I
> > >>>>> can only return 1 expression.
> >
> > >>>>> Do I need to use a ListExpression or something?
> >
> > >>>>> By the way the lack of documentation for this kind of thing is
> > >>>>> frightenning.  Without Rhino.DSL I would have been lost.
> >
> > >>>>> Cheers
> >
> > >>>>> Paul
> >
> > >>>>> On 6 Nov, 16:31, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
> > >>>>> > LOL
> >
> > >>>>> > On Thu, Nov 6, 2008 at 6:06 PM, Paul Cowan <[EMAIL PROTECTED]>
> > >>>>> wrote:
> > >>>>> > > Excellent,
> >
> > >>>>> > > I'll resist the urge to say that you should write a BOOk about
> > >>>>> this, I'm
> > >>>>> > > guessing you may have heard it before!!!
> >
> > >>>>> > > 2008/11/6 Ayende Rahien <[EMAIL PROTECTED]>
> >
> > >>>>> > > You need to create a meta method that accepts a params of
> > >>>>> > >> ReferenceExpression.this will allow you to skip the strings.
> > >>>>> > >> The meta method will be responsible only for translating the
> call
> > >>>>> from RE
> > >>>>> > >> to strings, and generating a new method call to the real Tasks
> > >>>>> method
> >
> > >>>>> > >> On Thu, Nov 6, 2008 at 7:25 AM, dagda1 <[EMAIL PROTECTED]>
> > >>>>> wrote:
> >
> > >>>>> > >>> I have the following dsl with the help of rhino DSL
> >
> > >>>>> > >>> Install "component":
> > >>>>> > >>>    Description "blah"
> > >>>>> > >>>    Svn "https://server.com";
> > >>>>> > >>>    Tasks "one", "two", "three"
> >
> > >>>>> > >>> I am unhappy with it because I think I am over using strings.
> >
> > >>>>> > >>> Can anyone suggest a better way?
> >
> > >>>>> > >>> Also can anyone tell me how to read in the multiple values
> for
> > >>>>> the
> > >>>>> > >>> tasks
> > >>>>> > >>> Section on the last line?
> >
> > >>>>> > >>> Cheers- Hide quoted text -
> >
> > >>>>> > - Show quoted text -- Hide quoted text -
> >
> > - Show quoted text -
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to