package lucee.transformer.cfml.evaluator.func.impl;
import lucee.runtime.exp.TemplateException;
import lucee.transformer.TransformerException;
import lucee.transformer.bytecode.expression.var.Argument;
import lucee.transformer.bytecode.expression.var.Assign;
import lucee.transformer.bytecode.expression.var.BIF;
import lucee.transformer.bytecode.expression.var.NamedArgument;
import lucee.transformer.bytecode.expression.var.VariableString;
import lucee.transformer.cfml.evaluator.EvaluatorException;
import lucee.transformer.cfml.evaluator.FunctionEvaluator;
import lucee.transformer.expression.var.Variable;
import lucee.transformer.library.function.FunctionLibFunction;
public class QueryExecute implements FunctionEvaluator{
@Override
public void execute(BIF bif, FunctionLibFunction flf) throws TemplateException {
}
@Override
public void evaluate(BIF bif, FunctionLibFunction flf) throws EvaluatorException {
Variable var = bif.getParent();
if(var!=null) {
Assign ass = var.assign();
if(ass!=null) {
try {
String str = VariableString.variableToString(ass.getVariable(), false);
addArgument(bif,str);
}
catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private void addArgument(BIF bif, String str) {
Argument[] args = bif.getArguments();
// named arguments
if(args[0] instanceof NamedArgument) {
bif.addArgument(
new NamedArgument(
bif.getFactory().createLitString("name"),
bif.getFactory().createLitString(str),
"string",
false));
}
// regular arguments
else {
// add params
if(args.length==1) {
bif.addArgument(new Argument(bif.getFactory().createNull(), "any"));
}
// add options
if(args.length<=2) {
bif.addArgument(new Argument(bif.getFactory().createStruct(), "struct"));
}
// add the name
bif.addArgument(new Argument(bif.getFactory().createLitString(str), "string"));
}
}
@Override
public FunctionLibFunction pre(BIF bif, FunctionLibFunction flf) throws TemplateException {return null;}
}