[stringtemplate-interest] Using the "format" option with a template calls

Terence Parr parrt at cs.usfca.edu
Wed Jan 26 16:49:28 PST 2011


Actually, do you have an STRenderer?  t() yields an ST not a string.
Ter
On Jan 25, 2011, at 4:07 PM, Udo Borkowski wrote:

>> Hi. does <(t()); format="upper"> work?
> 
> Nearly. It seems it eats (leading) white spaces.
> 
> Here my little example group:
> -------------------
> t() ::= <<
>    abc
>>> 
> 
> main() ::= <<
> «t()»
> «t();format="upper"»
> «(t());format="upper"»
> «t().render;format="upper"»
>>> 
> -----------------
> Rendering main will produce this output:
> -----------------
>    abc
>    abc
> ABC
>    ABC
> -----------------
> 3rd line is the (t()) case, 4th line produced by my ST ObjectAdapter.
> 
> Udo
> 
> On 25.01.2011, at 20:45, Terence Parr wrote:
> 
>> Hi. does <(t()); format="upper"> work?
>> Ter
>> On Jan 25, 2011, at 12:56 AM, Udo Borkowski wrote:
>> 
>>> While the "format" option work fine with attributes, like in
>>> 
>>> 	<attr;format="upper">
>>> 
>>> it does not seem to work when used together with template invocations, like:
>>> 
>>> 	<t();format="upper">
>>> 
>>> I don't know if this is intended (e.g. because of performance reasons) or a bug. I personally would like to have the format option also work in the latter situation. E.g. when I "refactor" my templates it happens data once stored in an attribute moves into a template. This was not possible when the "format" option is used.
>>> 
>>> 
>>> I am currently working around this by using a custom ObjectModelAdapter for ST, using this code:
>>> 
>>> 	public Object getProperty(ST self, Object o, Object property,
>>> 			String propertyName) throws STNoSuchPropertyException {
>>> 		if ("render".equals(propertyName) && (o instanceof ST)) {
>>> 			return ((ST) o).render();
>>> 		}
>>> 		return super.getProperty(self, o, property, propertyName);
>>> 	}
>>> 
>>> This way the above example looks like this:
>>> 
>>> 	<t().render;format="upper">
>>> 
>>> While this works fine I am still wondering if the "format" options should also work for the simple template call, too.
>>> 
>>> What do you think?
>>> 
>>> Udo
>>> 
>>> _______________________________________________
>>> stringtemplate-interest mailing list
>>> stringtemplate-interest at antlr.org
>>> http://www.antlr.org/mailman/listinfo/stringtemplate-interest
>> 
>> _______________________________________________
>> stringtemplate-interest mailing list
>> stringtemplate-interest at antlr.org
>> http://www.antlr.org/mailman/listinfo/stringtemplate-interest
> 



More information about the stringtemplate-interest mailing list