[stringtemplate-interest] listing attributes of elements in collection

Rabea Gransberger rgransberger at gmx.de
Mon Jul 14 14:06:41 PDT 2008


Dieter Frej schrieb:
> Hi,
> 
> I have the following structure of data in Java:
> 
> class u
> - List<inputColumns> inputColumns
> 
> class inputColumns
> - String identifier
> 
> What I now actually want to do is to list the identifiers of the inputColumns separated by ", ". How can I do that? The most obvious version
> 
> $u.inputColumns.identifier; separator=", "$

I don't know if you could use it like that. But what works is something 
like:

listColumns(u) ::= <<
<first(u.inputColumns):{col | 
<col.identifier>}><rest(u.inputColumns):{col | , <col.identifier>}>
 >>

public class AccessAttributes {

	public static final class U {
		public List<InputColumn> inputColumns = new ArrayList<InputColumn>();
	}

	public static final class InputColumn {
		public String identifier;

		InputColumn(String name) {
			this.identifier = name;
		}
	}

	public static void main(String[] args) throws IOException {
		U u = new U();
		u.inputColumns.add(new InputColumn("col1"));
		u.inputColumns.add(new InputColumn("col2"));

		final FileReader reader = new FileReader("templates/group.stg");
		StringTemplateGroup groupFile = new StringTemplateGroup(reader);
		reader.close();

		final StringTemplate listColumnsTemplate = groupFile
				.getInstanceOf("listColumns");
		listColumnsTemplate.setAttribute("u", u);
		System.out.println(listColumnsTemplate.toString());
	}

}

Have a look at the Cheat Sheet to find some examples for the functions 
Stringtemplate offers:
http://www.antlr.org/wiki/display/ST/StringTemplate+cheat+sheet

Rabea


More information about the stringtemplate-interest mailing list