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;
|
}
|
}
|