package net.paoding.rose.jade.statement.expression.impl;
import net.paoding.rose.jade.statement.expression.ExprResolver;
import net.paoding.rose.jade.statement.expression.ExqlContext;
import net.paoding.rose.jade.statement.expression.ExqlUnit;
import net.paoding.rose.jade.statement.expression.util.ExqlUtils;
/**
* 直接输出表达式内容的语句单元, 例如: '##(:expr)' 形式的表达式,内容不经转义输出。
*
* @author han.liao
*/
public class JoinExprUnit implements ExqlUnit {
private final String expr;
/**
* 构造输出表达式内容的语句单元。
*
* @param text - 输出的表达式
*/
public JoinExprUnit(String expr) {
this.expr = expr;
}
@Override
public boolean isValid(ExprResolver exprResolver) {
// 解释表达式内容
Object obj = ExqlUtils.execExpr(exprResolver, expr);
// 表达式内容有效
return ExqlUtils.isValid(obj);
}
@Override
public void fill(ExqlContext exqlContext, ExprResolver exprResolver) throws Exception {
// 解释表达式内容
Object obj = exprResolver.executeExpr(expr);
// 直接输出未经转义的对象内容
exqlContext.fillText(String.valueOf(obj));
}
}