package v6.apps.zelvak;

public class NumberExpressionState extends AbstractState{

	private final ArgumentState argumentState;
	
	private final StringBuilder numBuilder = new StringBuilder();
	
	public NumberExpressionState(ArgumentState argumentState, ParsingContext context) {
		super(argumentState, context);
		this.argumentState = argumentState;
	}

	@Override
	public State process(char c) throws WTFException {
		//System.out.println("NES: "+c);
		if(Character.isDigit(c) || c == '.' || c=='+' || c == '-'){
			numBuilder.append(c);
			return this;
		}else{
			try{
				argumentState.addArgument(Double.parseDouble(numBuilder.toString()));
			}catch(NumberFormatException e){
				throw new WTFException("Problem with a number: " + e.toString()); // TODO: exception chaining
			}
			return parent.process(c);
		}
	}
	
}
