public static String evaluate(String templateString, Map<String, Object> environment) {
final Scanner s = new Scanner(templateString);
// TODO: This is a hack that fails if a string literal contains "}"
// TODO: It's because i couldn't be bothered nesting grammars.
s.useDelimiter("((?!\\\\)\\$\\{)|(})");
StringBuilder ret = new StringBuilder();
boolean isInsideExpr = templateString.startsWith("${");
while(s.hasNext()) {
final String str = s.next();
if (isInsideExpr) {
final JsLikeExpressionLexer lexer = new JsLikeExpressionLexer(CharStreams.fromString(str));
final CommonTokenStream tokenStream = new CommonTokenStream(lexer);
final JsLikeExpressionParser parser = new JsLikeExpressionParser(tokenStream);
final TemplateStringEvaluatorVisitor visitor = new TemplateStringEvaluatorVisitor(environment);
ret.append(parser.expression().accept(visitor).toString());
} else {
ret.append(str);
}
isInsideExpr = !isInsideExpr;
}
return ret.toString();
}
TemplateStringEvaluator.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:jobson
作者:
评论列表
文章目录