package org.krakenapps.logdb.query;
import java.text.ParseException;
import org.krakenapps.bnf.Binding;
import org.krakenapps.bnf.ParserContext;
import org.krakenapps.bnf.Placeholder;
import org.krakenapps.bnf.Result;
import org.krakenapps.logdb.query.command.OptionChecker;
public class OptionPlaceholder implements Placeholder {
@Override
public Result eval(String text, int position, ParserContext ctx) throws ParseException {
String str = text.substring(position).trim();
if (!str.startsWith("(") || !str.contains("=") || !str.contains(")"))
throw new ParseException("not option format", position);
int eq = str.indexOf("=");
int end = str.indexOf(")");
if (end < eq)
throw new ParseException("not option format", position);
String key = str.substring(1, eq).trim();
String value = str.substring(eq + 1, end).trim();
if (key.contains("("))
throw new ParseException("not option format", position);
return new Result(new Binding(this, new OptionChecker(key, value)), text.indexOf(")", position) + 1);
}
}