Skip to content

Commit ddd4e90

Browse files
committed
ScriptInfo: parse choices attribute
Now that we use SJEP, this is straightforward to do.
1 parent aea2aca commit ddd4e90

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/main/java/org/scijava/script/ScriptInfo.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import java.io.Reader;
3939
import java.io.StringReader;
4040
import java.text.SimpleDateFormat;
41-
import java.util.Arrays;
41+
import java.util.ArrayList;
4242
import java.util.Collections;
4343
import java.util.Date;
4444
import java.util.HashMap;
@@ -450,10 +450,7 @@ private <T> void assignAttribute(final DefaultMutableModuleItem<T> item,
450450
// CTR: There must be an easier way to do this.
451451
// Just compile the thing using javac? Or parse via javascript, maybe?
452452
if (is(k, "callback")) item.setCallback(as(v, String.class));
453-
else if (is(k, "choices")) {
454-
// FIXME: Regex above won't handle {a,b,c} syntax.
455-
// item.setChoices(list(v, item.getType()));
456-
}
453+
else if (is(k, "choices")) item.setChoices(asList(v, item.getType()));
457454
else if (is(k, "columns")) item.setColumnCount(as(v, int.class));
458455
else if (is(k, "description")) item.setDescription(as(v, String.class));
459456
else if (is(k, "initializer")) item.setInitializer(as(v, String.class));
@@ -484,6 +481,15 @@ private <T> T as(final Object v, final Class<T> type) {
484481
return convertService.convert(v, type);
485482
}
486483

484+
private <T> List<T> asList(final Object v, final Class<T> type) {
485+
final ArrayList<T> result = new ArrayList<T>();
486+
final List<?> list = as(v, List.class);
487+
for (final Object item : list) {
488+
result.add(as(item, type));
489+
}
490+
return result;
491+
}
492+
487493
/**
488494
* Read entire contents of a Reader and return as String.
489495
*

0 commit comments

Comments
 (0)