velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lanxiazhi <lanxia...@gmail.com>
Subject Re: simple problem
Date Mon, 20 Jul 2009 14:43:06 GMT
hello,try it this way,with single quote,
#expr('$a+$b*300')
which works as expected.

2009/7/20 Alexander <the.malkolm@gmail.com>

> lanxiazhi,
>
>
> > by the way,besides evaluating  math expression ,my macro can insert
> > varibles in it.
>
> like expr("$a+100*$b").
>
>
> Before you passing "$a + 100*$b" to method parameters Velocity
> automatically
> gonna replace all variables with values, remember?
>
> > #macro(calc $expr)
>
> $mathHelper.calculate($expr)
>
> #end
>
>
> $mathHelper.calculate("$a + 100*$b")
>
>
> 2009/7/20 lanxiazhi <lanxiazhi@gmail.com>
>
> > Yes,Alexander,and I google it,and i found one choice:jep.and maybe javacc
> > is
> > another choice for this.
> > by the way,besides evaluating  math expression ,my macro can insert
> > varibles
> > in it.
> > like expr("$a+100*$b").
> > still I think this is not a good way to do it,maybe next version of
> > velocity
> > will support this expression eval internally,which I think is not a hard
> > task for the talented developers.
> > the macro:
> > #macro(expr $expression)
> > #set($temp--='#set($temp---'+"=$expression)"+'$temp---')
> > #evaluate($temp--)
> > #end
> > 2009/7/20 Alexander <the.malkolm@gmail.com>
> >
> > > Maybe you should find some class that can parse and evaluate math
> string
> > > (like "1+2+3*3 + 8/2") andthen use it in macro?
> > >
> > > #macro(calc $expr)
> > > $mathHelper.calculate($expr)
> > > #end
> > >
> > > I see you are trying to write ur own parser and I dont think It is a
> good
> > > idea. There should be a lot of
> > > such classes in internet, as writing calculator is ordinary simple task
> > for
> > > beginner, huh?
> > >
> > > 2009/7/20 lanxiazhi <lanxiazhi@gmail.com>
> > >
> > > > Hello,everyone,I work on the problem this whole afternoon...
> > > > finally,I decided to end this with a macro:
> > > > #macro(expr $expression)
> > > > #set($temp--='#set($temp---'+"=$expression)"+'$temp---')
> > > > #evaluate($temp--)
> > > > $temp---
> > > > #end
> > > > #set($a=2)
> > > > #expr("$a*100+200")
> > > >
> > > > which result in a 400.
> > > > wait for an easier way from you .
> > > > thanks
> > > >
> > > > 2009/7/20 lanxiazhi <lanxiazhi@gmail.com>
> > > >
> > > > > thanks Rupali,
> > > > > I got this problem when I started to think that, can I simply
> output
> > an
> > > > > expression like #{1+2+200000*3+$a}  without a varible?
> > > > >
> > > > > 2009/7/20 Rupali Gupta <r.gupta1@mpstechnologies.com>
> > > > >
> > > > > Hi,
> > > > >>
> > > > >>
> > > > >>
> > > > >> Use $velocityCount in place where you need incremental value
of
> some
> > > > >> variable
> > > > >>
> > > > >> Eg: instead of,
> > > > >>
> > > > >>
> > > > >>
> > > > >>  #set($a = 0)
> > > > >>
> > > > >> #foreach($mapping in $mappings)
> > > > >>
> > > > >> Do something..
> > > > >>
> > > > >> #set($a = $a+1)
> > > > >>
> > > > >>
> > > > >>
> > > > >> <label for="journal-$a">Type something</label>
> > > > >>
> > > > >>
> > > > >>
> > > > >> Do it like:
> > > > >>
> > > > >>
> > > > >>
> > > > >> #foreach($mapping in $mappings)
> > > > >>
> > > > >> Do something..
> > > > >>
> > > > >> <label for="journal- $velocityCount ">Type something </label>
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > > > >> $velocityCount increase the value of variable incrementally,
> without
> > > > >> having
> > > > >> to use ($a= $a+1)
> > > > >>
> > > > >>
> > > > >>
> > > > >> I hope this helps!
> > > > >>
> > > > >>
> > > > >>
> > > > >> Thanks,
> > > > >>
> > > > >> Rupali
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > > > >>  _____
> > > > >>
> > > > >> From: lanxiazhi [mailto:lanxiazhi@gmail.com]
> > > > >> Sent: Monday, July 20, 2009 12:52 PM
> > > > >> To: Velocity Users List
> > > > >> Subject: Re: simple problem
> > > > >>
> > > > >>
> > > > >>
> > > > >> we know this #set($a = $a + 1) will change $a which in some cases
> > may
> > > > not
> > > > >> be
> > > > >> preferable...but thanks anyway.
> > > > >>
> > > > >> 2009/7/20 Alexander <the.malkolm@gmail.com>
> > > > >>
> > > > >> Hi,
> > > > >>
> > > > >>
> > > > >>
> > > > >> Use
> > > > >>
> > > > >>
> > > > >>
> > > > >> #set($a = $a + 1)
> > > > >>
> > > > >>
> > > > >>
> > > > >> Correct me if Im wrong but if u use variable like this it would
> > write
> > > > >> "hello" on a single line, where is the problem?
> > > > >>
> > > > >>
> > > > >>
> > > > >> #set($newline="hello")
> > > > >>
> > > > >> $newline
> > > > >>
> > > > >>
> > > > >>
> > > > >>
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message