velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander <the.malk...@gmail.com>
Subject Re: simple problem
Date Mon, 20 Jul 2009 14:39:49 GMT
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