implemented catching of simple expressions without variables

pull/2/head
Vyacheslav N. Boyko 2018-01-09 17:53:46 +03:00
parent 0594e6775d
commit 289c990887
1 changed files with 27 additions and 5 deletions

View File

@ -53,8 +53,16 @@ public class CalculatorDialog extends FSM {
dialog.exp = null;
dialog.expression = dialog.command;
dialog.expressionBuilder = new ExpressionBuilder(dialog.expression);
dialog.event.respond("inited, expression: "+dialog.expression);
dialog.event.respond("next: 'vars' for setting vars, 'done' for calculating, 'help' for help");
if (dialog.checkCalculating()) {
try {
dialog.next();
} catch (FSMException e) {
e.printStackTrace();
}
} else {
dialog.event.respond("inited, expression: " + dialog.expression);
dialog.event.respond("next: 'vars' for setting vars, 'done' for calculating, 'help' for help");
}
}
});
@ -68,7 +76,7 @@ public class CalculatorDialog extends FSM {
@Override
public boolean check() {
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
return dialog.commands[0].equalsIgnoreCase("done");
return dialog.checkCalculating() || dialog.commands[0].equalsIgnoreCase("done");
}
});
@ -82,7 +90,7 @@ public class CalculatorDialog extends FSM {
@Override
public boolean check() {
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
return dialog.commands[0].equalsIgnoreCase("vars");
return !dialog.checkCalculating() && dialog.commands[0].equalsIgnoreCase("vars");
}
});
@ -101,7 +109,8 @@ public class CalculatorDialog extends FSM {
@Override
public boolean check() {
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
return !dialog.commands[0].equalsIgnoreCase("done")
return !dialog.checkCalculating()
&& !dialog.commands[0].equalsIgnoreCase("done")
&& !dialog.commands[0].equalsIgnoreCase("vars");
}
});
@ -216,6 +225,19 @@ public class CalculatorDialog extends FSM {
}
}
private boolean checkCalculating() {
if (exp == null) {
try {
expressionBuilder.build();
} catch (Exception e) {
//event.respond("ERROR: "+e.getMessage());
return false;
}
return true;
}
return false;
}
public void setEvent(GenericMessageEvent event) {
this.event = event;
}