|
From: Dan M. <psi...@ya...> - 2005-09-22 18:40:04
|
That method works great to get the result. One last
thing, how come webmacro expressions do not return
double. Is that historical? Now that we use a grammar
and parser for WM can is it possible to expand
expressions?
Thanks
--- "Eric B. Ridge" <eb...@tc...> wrote:
> Rather than creating a StringMacro, create a
> StringTemplate, with a
> mini-template of:
> #set $foo = $x + 1
>
> Then use a custom TemplateVisitor to pull out the
> "SetValue" argument
> of the #set directive:
>
> static class MyTemplateVisitor extends
> TemplateVisitor {
> Object value;
>
> public Object getValue() {
> return value;
> }
>
> public void visitDirectiveArg(String
> string, Object object) {
> // the #set directive has 2 arguments:
> "SetTarget" (LHS)
> // and "SetValue" (RHS). We're only
> interested in
> "SetValue"
> if (string.equals("SetValue")) {
> value = object;
> }
> }
> }
>
> So, you're code will be something like:
>
> public Object evalExpression (Context context,
> String expression) {
> StringTemplate tmpl = new StringTemplate
> (context.getBroker(),
> "#set $foo = " + expression);
> MyTemplateVisitor visitor = new
> MyTemplateVisitor();
>
> template.parse();
> template.accept(visitor);
>
> Object value = visitor.getValue();
> if (value instanceof Maco) {
> return ((Macro) value).evaluate(_context);
> } else {
> return value;
> }
> }
>
> Hope this helps.
>
> eric
>
>
>
>
>
> On Sep 22, 2005, at 12:22 PM, Dan Miller wrote:
>
> > I guess what I was wondering about was using the
> api
> > directly stepping in before the #set places the
> result
> > into the context. I was looking into the src for
> > PropertyMethod and trying to figure out how to get
> the
> > result.
> >
> > I am using webmacro throughout a webproject, and
> would
> > like to use similiar webmacro expression in xml
> files
> > which are read and processed. Thanks
> >
> > --- Keats Kirsch <ke...@xa...> wrote:
> >
> >
> >> AFAIK there are only two ways to get something
> out
> >> of a WM template
> >> expansion -- capture the result of the expansion,
> or
> >> pull something from
> >> the context. Actually I suppose you could use
> the
> >> #bean directive to
> >> create a "global" variable and then get it from
> the
> >> Broker.
> >>
> >> Maybe if you can explain your requirements we
> could
> >> think of a way of
> >> doing what you want.
> >>
> >> Keats
> >>
> >> Dan Miller wrote:
> >>
> >>
> >>> The usage of the StringMacro to use the #set
> >>>
> >> directive
> >>
> >>> works great. I was wondering if there is
> anything
> >>> exposed to evaluate the expression without
> >>>
> >> modifying
> >>
> >>> the context.
> >>>
> >>> This works great, but I would like to leave the
> >>> context as is, not adding new temp variables to
> the
> >>> context.
> >>>
> >>> Context ctx = new Context();
> >>> ctx.put("val1", 1);
> >>> ctx.put("val2", 155);
> >>> Macro macro = null;
> >>> macro = new StringMacro("#set $val = $val1 +
> >>>
> >> $val2");
> >>
> >>> macro.evaluate( ctx);
> >>> Integer val = (Integer)ctx.get("val");
> >>>
> >>>
> >>> I am looking forward to the 2.0 release.
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>
> >>
> >
>
-------------------------------------------------------
> >
> >> SF.Net email is sponsored by:
> >> Tame your development challenges with Apache's
> >> Geronimo App Server. Download
> >> it for free - -and be entered to win a 42" plasma
> tv
> >> or your very own
> >> Sony(tm)PSP. Click here to play:
> >> http://sourceforge.net/geronimo.php
> >> _______________________________________________
> >> Webmacro-user mailing list
> >> Web...@li...
> >>
> >>
> >
>
https://lists.sourceforge.net/lists/listinfo/webmacro-user
> >
> >>
> >>
> >
> >
> >
> >
> > __________________________________
> > Yahoo! Mail - PC Magazine Editors' Choice 2005
> > http://mail.yahoo.com
> >
> >
> >
>
-------------------------------------------------------
> > SF.Net email is sponsored by:
> > Tame your development challenges with Apache's
> Geronimo App Server.
> > Download
> > it for free - -and be entered to win a 42" plasma
> tv or your very own
> > Sony(tm)PSP. Click here to play:
> http://sourceforge.net/geronimo.php
> > _______________________________________________
> > Webmacro-user mailing list
> > Web...@li...
> >
>
https://lists.sourceforge.net/lists/listinfo/webmacro-user
> >
>
>
>
>
-------------------------------------------------------
> SF.Net email is sponsored by:
> Tame your development challenges with Apache's
> Geronimo App Server. Download
> it for free - -and be entered to win a 42" plasma tv
> or your very own
> Sony(tm)PSP. Click here to play:
> http://sourceforge.net/geronimo.php
> _______________________________________________
> Webmacro-user mailing list
> Web...@li...
>
=== message truncated ===
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
|