return true;
}
@Internal
public static ListVector options(@Current Context context, @ArgumentList ListVector arguments) {
Options options = context.getSession().getSingleton(Options.class);
ListVector.NamedBuilder results = ListVector.newNamedBuilder();
if (arguments.length() == 0) {
// return all options as a list
for (String name : options.names()) {
results.add(name, options.get(name));
}
} else if (arguments.length() == 1
&& arguments.getElementAsSEXP(0) instanceof ListVector
&& StringVector.isNA(arguments.getName(0))) {
ListVector list = (ListVector) arguments.getElementAsSEXP(0);
if (list.getAttribute(Symbols.NAMES) == Null.INSTANCE) {
throw new EvalException("list argument has no valid names");
}
for (NamedValue argument : list.namedValues()) {
if (!argument.hasName()) {
throw new EvalException("invalid argument");
}
String name = argument.getName();
results.add(name, options.set(name, argument.getValue()));
}
} else {
for (NamedValue argument : arguments.namedValues()) {
if (argument.hasName()) {
String name = argument.getName();
results.add(name, options.set(name, argument.getValue()));
} else if (argument.getValue() instanceof StringVector) {
String name = ((StringVector) argument.getValue())
.getElementAsString(0);
results.add(name, options.get(name));
} else {
throw new EvalException("invalid argument");
}
}