public Object exec(List args) throws TemplateModelException {
Object obj;
String sub;
int fidx;
int ln = args.size();
if (ln == 0) {
throw new TemplateModelException(
"?index_of(...) expects at least one argument.");
}
if (ln > 2) {
throw new TemplateModelException(
"?index_of(...) expects at most two arguments.");
}
obj = args.get(0);
if (!(obj instanceof TemplateScalarModel)) {
throw new TemplateModelException(
"?index_of(...) expects a string as "
+ "its first argument.");
}
sub = ((TemplateScalarModel) obj).getAsString();
if (ln > 1) {
obj = args.get(1);
if (!(obj instanceof TemplateNumberModel)) {
throw new TemplateModelException(
"?index_of(...) expects a number as "
+ "its second argument.");
}
fidx = ((TemplateNumberModel) obj).getAsNumber().intValue();
} else {
fidx = 0;
}
return new SimpleNumber(s.indexOf(sub, fidx));
}
|