private static final class JSFunctionConverter implements Util.Converter<JSFunction> {
public JSFunction convert(Object obj) {
Scriptable scope = (Scriptable) obj;
String name = Util.stringValue("name", scope);
int line = Util.intValue("line", scope);
Builder b = new JSFunction.Builder(name, line);
b.last(Util.intValue("last", scope));
for (String param : Util.listValueOfType("parameter", String.class, scope)) {
b.addParam(param);
}
for (String closure : Util.listValueOfType("closure", String.class, scope)) {
b.addClosure(closure);
}
for (String var : Util.listValueOfType("var", String.class, scope)) {
b.addVar(var);
}
for (String exception : Util.listValueOfType("exception", String.class, scope)) {
b.addException(exception);
}
for (String outer : Util.listValueOfType("outer", String.class, scope)) {
b.addOuter(outer);
}
for (String unused : Util.listValueOfType("unused", String.class, scope)) {
b.addUnused(unused);
}
for (String global : Util.listValueOfType("global", String.class, scope)) {
b.addGlobal(global);
}
for (String label : Util.listValueOfType("label", String.class, scope)) {
b.addLabel(label);
}
return b.build();
}