package edu.stanford.nlp.sempre.tables.alter;
import java.util.*;
import edu.stanford.nlp.sempre.*;
public class ValueCanonicalizer {
public static final ErrorValue ERROR = new ErrorValue("ERROR");
public static Value canonicalize(Value value) {
if (value instanceof ErrorValue) {
return ERROR;
} else if (value instanceof ListValue) {
List<Value> stuff = ((ListValue) value).values;
List<Value> canonical = new ArrayList<>();
for (Value x : stuff) {
if (x instanceof DateValue) {
DateValue date = (DateValue) x;
if (date.month == -1 && date.day == -1)
canonical.add(new NumberValue(date.year));
else
canonical.add(x);
} else {
canonical.add(x);
}
}
ListValue canonList = new ListValue(canonical).getUnique();
return (canonList.values.size() == 1) ? canonList.values.get(0) : canonList;
} else {
return value; // Probably infinite value
}
}
}