Package org.stringtemplate.v4
Class ST
- java.lang.Object
-
- org.stringtemplate.v4.ST
-
public class ST extends Object
An instance of the StringTemplate. It consists primarily of a reference to its implementation (shared among all instances) and a hash table of attributes. Because of dynamic scoping, we also need a reference to any enclosing instance. For example, in a deeply nested template for an HTML page body, we could still reference the title attribute defined in the outermost page template.To use templates, you create one (usually via
STGroup) and then inject attributes usingadd(java.lang.String, java.lang.Object). To render its attacks, userender().TODO:
localsis not actually a hash table like the documentation says.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classST.AttributeListJust an alias forArrayList, but this way I can track whether a list is something ST created or it's an incoming list.static classST.DebugStateEvents during template hierarchy construction (not evaluation)static classST.RegionType<@r()>,<@r>...<@end>, and@t.r() ::= "..."defined manually by coder
-
Field Summary
Fields Modifier and Type Field Description ST.DebugStatedebugStateIfSTGroup.trackCreationEvents, track creation and add attribute events for each object.static ObjectEMPTY_ATTRSTGroupgroupThatCreatedThisInstanceCreated as instance of which group? We need this to initialize interpreter via render.CompiledSTimplThe implementation for this template among all instances of same template .static StringIMPLICIT_ARG_NAMEWhen there are no formal args for template t and you map t across some values, t implicitly gets arg "it".protected Object[]localsSafe to simultaneously write viaadd(java.lang.String, java.lang.Object), which is synchronized.static StringUNKNOWN_NAMEstatic StringVERSION
-
Constructor Summary
Constructors Modifier Constructor Description protectedST()Used by group creation routine, not by usersST(String template)Used to make templates inline in code for simple things like SQL or log records.ST(String template, char delimiterStartChar, char delimiterStopChar)Create ST using non-default delimiters; each one of these will live in it's own group since you're overriding a default; don't want to alterSTGroup.defaultGroup.ST(ST proto)Clone a prototype template.ST(STGroup group, String template)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description STadd(String name, Object value)Inject an attribute (name/value pair).STaddAggr(String aggrSpec, Object... values)SplitaggrName.{propName1,propName2}into list[propName1, propName2]and theaggrName.protected static ST.AttributeListconvertToAttributeList(Object curvalue)static Stringformat(int lineWidth, String template, Object... attributes)static Stringformat(String template, Object... attributes)ST.format("<%1>:<%2>", n, p);ObjectgetAttribute(String name)Find an attribute in this template only.Map<String,Object>getAttributes()List<InterpEvent>getEvents()List<InterpEvent>getEvents(int lineWidth)List<InterpEvent>getEvents(Locale locale)List<InterpEvent>getEvents(Locale locale, int lineWidth)StringgetName()STVizinspect()STVizinspect(int lineWidth)STVizinspect(Locale locale)STVizinspect(ErrorManager errMgr, Locale locale, int lineWidth)booleanisAnonSubtemplate()protected voidrawSetAttribute(String name, Object value)Setlocalsattribute value when you only know the name, not the index.voidremove(String name)Remove an attribute value entirely (can't remove attribute definitions).Stringrender()Stringrender(int lineWidth)Stringrender(Locale locale)Stringrender(Locale locale, int lineWidth)StringtoString()intwrite(File outputFile, STErrorListener listener)intwrite(File outputFile, STErrorListener listener, String encoding)intwrite(File outputFile, STErrorListener listener, String encoding, int lineWidth)intwrite(File outputFile, STErrorListener listener, String encoding, Locale locale, int lineWidth)intwrite(STWriter out)intwrite(STWriter out, Locale locale)intwrite(STWriter out, Locale locale, STErrorListener listener)intwrite(STWriter out, STErrorListener listener)
-
-
-
Field Detail
-
VERSION
public static final String VERSION
- See Also:
- Constant Field Values
-
UNKNOWN_NAME
public static final String UNKNOWN_NAME
- See Also:
- Constant Field Values
-
EMPTY_ATTR
public static final Object EMPTY_ATTR
-
IMPLICIT_ARG_NAME
public static final String IMPLICIT_ARG_NAME
When there are no formal args for template t and you map t across some values, t implicitly gets arg "it". E.g., "$it$"- See Also:
- Constant Field Values
-
impl
public CompiledST impl
The implementation for this template among all instances of same template .
-
locals
protected Object[] locals
Safe to simultaneously write viaadd(java.lang.String, java.lang.Object), which is synchronized. Reading during exec is, however, NOT synchronized. So, not thread safe to add attributes while it is being evaluated. Initialized toEMPTY_ATTRto distinguishnullfrom empty.
-
groupThatCreatedThisInstance
public STGroup groupThatCreatedThisInstance
Created as instance of which group? We need this to initialize interpreter via render. So, we create st and then it needs to know which group created it for sake of polymorphism:st = skin1.getInstanceOf("searchbox"); result = st.render(); // knows skin1 created itSay we have a groupg1with templatetthat imports templatestandufrom another groupg2.g1.getInstanceOf("u")findsuing2but remembers thatg1created it. Ifuincludest, it should createg1.tnotg2.t.g1 = {t(), u()} | v g2 = {t()}
-
debugState
public ST.DebugState debugState
IfSTGroup.trackCreationEvents, track creation and add attribute events for each object. Create this object on first use.
-
-
Constructor Detail
-
ST
protected ST()
Used by group creation routine, not by users
-
ST
public ST(String template)
Used to make templates inline in code for simple things like SQL or log records. No formal arguments are set and there is no enclosing instance.
-
ST
public ST(String template, char delimiterStartChar, char delimiterStopChar)
Create ST using non-default delimiters; each one of these will live in it's own group since you're overriding a default; don't want to alterSTGroup.defaultGroup.
-
ST
public ST(ST proto)
Clone a prototype template. Copy all fields minusdebugState; don't delegate toST(), which createsConstructionEvent.
-
-
Method Detail
-
add
public ST add(String name, Object value)
Inject an attribute (name/value pair). If there is already an attribute with that name, this method turns the attribute into anST.AttributeListwith both the previous and the new attribute as elements. This method will never alter aListthat you inject. If you send in aListand then inject a single value element,addcopies original list and adds the new value. The attribute name cannot be null or contain '.'.Return
thisso we can chain:t.add("x", 1).add("y", "hi")
-
addAggr
public ST addAggr(String aggrSpec, Object... values)
SplitaggrName.{propName1,propName2}into list[propName1, propName2]and theaggrName. Spaces are allowed around','.
-
remove
public void remove(String name)
Remove an attribute value entirely (can't remove attribute definitions).
-
rawSetAttribute
protected void rawSetAttribute(String name, Object value)
Setlocalsattribute value when you only know the name, not the index. This is ultimately invoked by callingST#addfrom outside so toss an exception to notify them.
-
convertToAttributeList
protected static ST.AttributeList convertToAttributeList(Object curvalue)
-
getName
public String getName()
-
isAnonSubtemplate
public boolean isAnonSubtemplate()
-
write
public int write(STWriter out) throws IOException
- Throws:
IOException
-
write
public int write(STWriter out, STErrorListener listener)
-
write
public int write(STWriter out, Locale locale, STErrorListener listener)
-
write
public int write(File outputFile, STErrorListener listener) throws IOException
- Throws:
IOException
-
write
public int write(File outputFile, STErrorListener listener, String encoding) throws IOException
- Throws:
IOException
-
write
public int write(File outputFile, STErrorListener listener, String encoding, int lineWidth) throws IOException
- Throws:
IOException
-
write
public int write(File outputFile, STErrorListener listener, String encoding, Locale locale, int lineWidth) throws IOException
- Throws:
IOException
-
render
public String render()
-
render
public String render(int lineWidth)
-
inspect
public STViz inspect()
-
inspect
public STViz inspect(int lineWidth)
-
inspect
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth)
-
getEvents
public List<InterpEvent> getEvents()
-
getEvents
public List<InterpEvent> getEvents(int lineWidth)
-
getEvents
public List<InterpEvent> getEvents(Locale locale)
-
getEvents
public List<InterpEvent> getEvents(Locale locale, int lineWidth)
-
format
public static String format(String template, Object... attributes)
ST.format("<%1>:<%2>", n, p);
-
-