Re: Parsing of numeric values

Daniel Dekany <[email protected]>
Newsgroups gmane.comp.web.freemarker.user
Message-ID <[email protected]>
Tuesday, September 15, 2009, 4:34:22 AM, wkbutler wrote:

>
> Hello - 
> I am a bit confused on the built-in capability of FM to parse a localized
> numeric expression,

It's none. FM can convert simple "computer-audience number" strings
back to numbers, because sometimes, for purely technical reasons, you
get numbers "serialized" to text format. Parsing human-audience
numbers is out of the scope of FM, and in theory you should deal with
that in the C of MVC, not in the V. Means, although you can solve that
in the V with a TempateMethdoModelEx (or with a #function), you might
shouldn't do that.

> and before I write a custom routine for this, maybe
> there is wisdom I lack.
>
> I am trying to process a mathematical expression on the contents of a map of
> string data:
>
> ---------------
> | a |  1,111    |
> | b |  2,222    |
> ---------------
>
> so a simple expression like
>      ${a?number + b?number}  
>
> would work if the numbers were not localized, right?

At least with this concrete example, yes.

> That I have had success with.
>
> The original syntax 
>    #{a} + #{b}
>
> is deprecated according to this page in the docs
>     
> http://freemarker.sourceforge.net/docs/ref_depr_numerical_interpolation.html

It is. Don't use it.

> although trying this I get the error message:
>
>     a is not a number, it is freemarker.template.SimpleScalar

Unlike ?number, #{...} doesn't even try to convert strings to numbers.

> Using the number built-in ?c and the string built-in
> ?string.computer fail with similar messages,

These convert a number (or date, etc.) to a string, not the other way
around.

> such as "Expected hash" etc. It seems I do not understand what data
> type I am dealing with.

notANumber?string is not a hash (aNumber?string is), but the dot (.)
operator will expect a hash on its left side, hence it throws the
above error. Yeah, a but tricky...

> I would like to have have the 2 numbers added together and output with the
> default localized syntax.  Am I looking past something?

No, except maybe that, whatever view technology are you using
(FreeMarker or not) it's not something that you should do in a the
view layer of your application. At least usually it's not...

> Thanks for ideas

-- 
Best regards,
 Daniel Dekany


------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.