Re: Several doubtful points on the manual
Daniel Dekany <[email protected]> Sun, 10 Mar 2013 13:07:25 +0100
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
Saturday, March 9, 2013, 2:17:55 PM, Albert Kam wrote:
> I have several points to ask based on the manual, please share your views :
>
> (1) http://freemarker.sourceforge.net/docs/dgui_datamodel_types.html
>> The main reason is that the result of functions are subject to automatic XML-escaping (due to the nature of ${...}),
> Is it true that the function return value and the result of
> interpolation are automatically escaped ?
> I tried this :
> <#assign myvar="hello&world">
>
> <#function hello>
> <#return "<inside&function">
> </#function>
>
> ${myvar}
> ${hello()}
>
> with this result :
> hello&world
> <inside&function
The output of `${...}` is escaped only if it's inside a #escape call.
Later maybe it will change so that escaping can be on by default,
without any #escape calls, and actually some users already do that
through a TemplateLoader hack. Anyway, the point is, if you want to
output markup, try not to use `${...}`, and hence functions, because
they aren't meant to be used for that. To generate markup use a macro
or directive.
>> while the output of user-defined directives are not (due to the nature of <@...>; its output is assumed to be markup, and hence already escaped).
> Is it true that user defined directives are automatically escaped
> also ? But i think not, since we have the ?html and #escape for this, am i right ?
The output of directives is never escaped, because they meant to
something that's already markup. That it's already markup also means
that if the directive (the macro) has contained `${...}`, it had to
ensure that those were properly escaped.
> (2) http://freemarker.org/docs/dgui_misc_userdefdir.html
>> also you can use complex expression on the left side of = (e.g. someParam=(price + 50)*1.25)
> Should be on the --right-- side instead of the --left-- side ?
Ops... right. Will fix it.
> (3) http://freemarker.org/docs/dgui_template_valueinsertion.html
>> Guide for inserting date/time values
>> If the expression evaluates to a date then the numerical value will be transformed to a text according to a default format.
> Should be the --date-- value instead of --numerical-- value ?
Sure. Also will be fixed.
> (4) http://freemarker.sourceforge.net/docs/dgui_misc_whitespace.html
>> It is useful for templates that contain macro definitions only (and some other non-outputting directives), because it removes the line-breaks that you use between the macro definitions and between the other top-level directives to improve the readability of the template
> How is it improving the readability of the 'library' template when
> what the developer see is always the unparsed version ?
That you can add empty lines helps readably. If those empty lines were
include in the output, the library author would omit them, making the
library less readable.
> Regards from Jakarta,
> Albert
--
Best regards,
Daniel Dekany
------------------------------------------------------------------------------
Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester
Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the
endpoint security space. For insight on selecting the right partner to
tackle endpoint security challenges, access the full report.
http://p.sf.net/sfu/symantec-dev2dev