package timeflow.format.field;
import java.net.URL;
import timeflow.data.time.*;
public abstract class FieldFormat {
protected String lastInput;
protected Object lastValue;
protected boolean understood=true;
double value;
void add(double x)
{
value+=x;
}
void note(String s)
{
add(scoreFormatMatch(s));
}
protected abstract Object _parse(String s) throws Exception;
public abstract String format(Object o);
public abstract Class getType();
public abstract double scoreFormatMatch(String s);
public abstract String getHumanName();
public void setValue(Object o)
{
lastValue=o;
lastInput=o==null ? "" : format(o);
}
public Object parse(String s) throws Exception
{
lastInput=s;
lastValue=null;
understood=false;
lastValue=_parse(s);
understood=true;
return lastValue;
}
public Object getLastValue()
{
return lastValue;
}
public String feedback()
{
if (!understood)
return "Couldn't understand";
return lastValue==null ? "(missing)" : "Read: "+format(lastValue);
}
public boolean isUnderstood()
{
return understood;
}
}