Я пытаюсь использовать StringTemplate.v4 для упрощенных шаблонов, имея в виду только простые имена пробелов, такие как %body%
— я не использую никаких других функций, таких как логика if, подшаблоны или выражения.
(Честно говоря, его API плохо документирован, и на данный момент я рассматриваю возможность полного отказа от него. Было бы неплохо, если бы был JavaDoc ссылки на исходный код, так что, по крайней мере, я мог копаться и разбираться во всем сам. Очень расстроен.)
Я пытаюсь определить пробелы, существующие в анонимном шаблоне, чтобы убедиться, что в нем есть необходимые пробелы, прежде чем пытаться его использовать.
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import org.stringtemplate.v4.ST;
import org.stringtemplate.v4.compiler.FormalArgument;
public class GapsInAnST {
public static final void main(String[] ignored) {
ST tmpl = new ST("Hello %name%. You are %age% years old.", '%', '%');
Map<String,Object> gapMap = tmpl.getAttributes();
System.out.println("gapMap=" + gapMap);
if(gapMap != null) {
System.out.println("getAttributes()=" + Arrays.toString(gapMap.keySet().toArray()));
}
System.out.println("tmpl.impl.hasFormalArgs=" + tmpl.impl.hasFormalArgs);
Map<String,FormalArgument> formalArgMap = tmpl.impl.formalArguments;
if(formalArgMap != null) {
System.out.println("getAttributes()=" + Arrays.toString(formalArgMap.keySet().toArray()));
}
tmpl.add("name", "Seymour");
tmpl.add("age", "43");
System.out.println(tmpl.render());
}
}
Выход:
gapMap=null
tmpl.impl.hasFormalArgs=false
Hello Seymour. You are 43 years old.
Я выяснил, почему getAttributes()
возвращает null
в этой ветки групп Google и о formalArguments
в этом вопросе: список атрибутов StringTemplate, определенных для данного шаблона).
Итак, как мне получить все пробелы, фактически существующие в анонимном шаблоне, прежде чем заполнить какие-либо пробелы? Я понимаю, что мог бы сделать это с помощью регулярного выражения , но я надеюсь, что есть встроенный способ сделать это.
Спасибо.