[stringtemplate-interest] misc

Brian Lewis bsl04 at uark.edu
Mon Mar 26 14:01:20 PDT 2007


On Mon, 26 Mar 2007 09:40:42 -0700
Colin Bean <ccbean at gmail.com> wrote:

> Haven't tested your first example, but you might try something like:
> ...
> };null="null"$

Test.java:

import java.io.*;
import java.util.*;
import org.antlr.stringtemplate.*;
import org.antlr.stringtemplate.language.*;

public final class Test
{
  public static void main(String[] arguments)
  {
    Test t = new Test();
    t.test();
  }

  public void test()
  {
    InputStream ins = getClass().getResourceAsStream("test.stg");
    InputStreamReader in = new InputStreamReader(ins);
    StringTemplateGroup g = new StringTemplateGroup(in,
DefaultTemplateLexer.class); StringTemplate st =
g.getInstanceOf("test"); System.out.println(st.toString());
  }
}

test.stg:

group test;
hack ::= ["x":, default:]
test() ::= <<
$
["field1", "field2"],
["label1", "label2"],
[""      , ""      ],
[hack.x  , "40"    ]:
{name, label, required, size|
$name$, $label$, $required$, $size$
};null="null"$
>>

The expected output is
field1, label1, , null
field2, label2, , 40

The actual output is
field1, label1, , 40
field2, label2, , 

> It's also possible to iterate over a list of maps:

Maybe if I had already made one in Java? I'm trying to create them in
ST and having trouble doing things like

group test;
fields ::= [
  [ "name":"field1", "label":"label1", "required":"", default: ],
  [ "name":"field1", "label":"label1", "required":"", "size":"40",
default: ] ]
test() ::= "$fields:{$it.name$, $it.label$, $it.required$,
$it.size$$\n$}$"

ST doesn't seem to understand my list of maps.


More information about the stringtemplate-interest mailing list