1
0
mirror of https://github.com/DanilaFe/abacus synced 2026-01-25 08:05:19 +00:00

Compare commits

..

6 Commits

Author SHA1 Message Date
ac17246317 Fix bug causing incorrect parsing of inputs with negative signs. 2018-01-30 21:10:02 -08:00
18e0bdebc5 Merge pull request #54 from DanilaFe/precedence-fix
Make sure the set and define operators have the lowest precedence.
2018-01-16 00:16:46 -08:00
251d0fc2c5 Make sure the set and define operators have the lowest precedence. 2018-01-16 00:14:46 -08:00
93c1c53612 Merge pull request #53 from DanilaFe/definitions-bugfix
Load definitions after Abacus finishes loading.
2017-11-23 23:02:25 -08:00
0b6798e28d Load definitions after Abacus finishes loading. 2017-11-23 23:00:33 -08:00
4188c83a66 Merge pull request #52 from DanilaFe/definition-files
Allow loading definition files.
2017-11-23 21:56:17 -08:00
9 changed files with 21 additions and 15 deletions

View File

@@ -11,7 +11,7 @@ import org.nwapw.abacus.number.NumberInterface
* *
* This is a standard operator that simply performs addition. * This is a standard operator that simply performs addition.
*/ */
class OperatorAdd: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 0) { class OperatorAdd: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 1) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 params.size == 2

View File

@@ -12,7 +12,7 @@ import org.nwapw.abacus.plugin.standard.StandardPlugin.*
* *
* This is a standard operator that brings one number to the power of the other. * This is a standard operator that brings one number to the power of the other.
*/ */
class OperatorCaret: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 2) { class OperatorCaret: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 3) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 params.size == 2

View File

@@ -11,7 +11,7 @@ import org.nwapw.abacus.number.NumberInterface
* *
* This is a standard operator that simply performs division. * This is a standard operator that simply performs division.
*/ */
class OperatorDivide: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 1) { class OperatorDivide: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 2) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 params.size == 2

View File

@@ -11,7 +11,7 @@ import org.nwapw.abacus.number.NumberInterface
* *
* This is a standard operator that simply performs multiplication. * This is a standard operator that simply performs multiplication.
*/ */
class OperatorMultiply: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 1) { class OperatorMultiply: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 2) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 params.size == 2

View File

@@ -14,7 +14,7 @@ import org.nwapw.abacus.plugin.standard.StandardPlugin.OP_NPR
* This is a standard operator that returns the number of possible combinations, regardless of order, * This is a standard operator that returns the number of possible combinations, regardless of order,
* of a certain size can be taken out of a pool of a bigger size. * of a certain size can be taken out of a pool of a bigger size.
*/ */
class OperatorNcr: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 0) { class OperatorNcr: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 1) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 && params[0].isInteger() params.size == 2 && params[0].isInteger()

View File

@@ -11,7 +11,7 @@ import org.nwapw.abacus.number.NumberInterface
* *
* This is a standard operator that negates a number. * This is a standard operator that negates a number.
*/ */
class OperatorNegate: NumberOperator(OperatorAssociativity.LEFT, OperatorType.UNARY_PREFIX, 0) { class OperatorNegate: NumberOperator(OperatorAssociativity.LEFT, OperatorType.UNARY_PREFIX, 1) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 1 params.size == 1

View File

@@ -12,7 +12,7 @@ import org.nwapw.abacus.number.NumberInterface
* his is a standard operator that returns the number of possible combinations * his is a standard operator that returns the number of possible combinations
* of a certain size can be taken out of a pool of a bigger size. * of a certain size can be taken out of a pool of a bigger size.
*/ */
class OperatorNpr: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 0) { class OperatorNpr: NumberOperator(OperatorAssociativity.RIGHT, OperatorType.BINARY_INFIX, 1) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 && params[0].isInteger() params.size == 2 && params[0].isInteger()

View File

@@ -11,7 +11,7 @@ import org.nwapw.abacus.number.NumberInterface
* *
* This is a standard operator that performs subtraction. * This is a standard operator that performs subtraction.
*/ */
class OperatorSubtract: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 0) { class OperatorSubtract: NumberOperator(OperatorAssociativity.LEFT, OperatorType.BINARY_INFIX, 1) {
override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) = override fun matchesParams(context: PluginEvaluationContext, params: Array<out NumberInterface>) =
params.size == 2 params.size == 2

View File

@@ -330,8 +330,10 @@ public class AbacusController implements PluginListener {
} }
} catch (AbacusException abacusError) { } catch (AbacusException abacusError) {
outputText.setText(ERR_DEFINITION + " (" + abacusError.getMessage() + ")"); outputText.setText(ERR_DEFINITION + " (" + abacusError.getMessage() + ")");
abacusError.printStackTrace();
} catch (RuntimeException runtime) { } catch (RuntimeException runtime) {
outputText.setText(ERR_DEFINITION + " (" + ERR_EXCEPTION + ")"); outputText.setText(ERR_DEFINITION + " (" + ERR_EXCEPTION + ")");
runtime.printStackTrace();
} catch (FileNotFoundException ignored) {} } catch (FileNotFoundException ignored) {}
} }
@@ -345,13 +347,13 @@ public class AbacusController implements PluginListener {
} catch (IOException | ClassNotFoundException e) { } catch (IOException | ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
} }
abacus.reload(); reloadAbacus();
} }
@FXML @FXML
public void performReload() { public void performReload() {
alertIfApplyNeeded(true); alertIfApplyNeeded(true);
abacus.reload(); reloadAbacus();
} }
@FXML @FXML
@@ -391,6 +393,13 @@ public class AbacusController implements PluginListener {
changesMade = true; changesMade = true;
} }
private void reloadAbacus(){
abacus.reload();
for(String file : definitionFiles){
loadDefinitionFile(file);
}
}
@Override @Override
public void onLoad(PluginManager manager) { public void onLoad(PluginManager manager) {
ExtendedConfiguration configuration = (ExtendedConfiguration) abacus.getConfiguration(); ExtendedConfiguration configuration = (ExtendedConfiguration) abacus.getConfiguration();
@@ -420,9 +429,6 @@ public class AbacusController implements PluginListener {
}).collect(Collectors.toCollection(ArrayList::new))); }).collect(Collectors.toCollection(ArrayList::new)));
functionList.sort(Comparator.comparing(Documentation::getCodeName)); functionList.sort(Comparator.comparing(Documentation::getCodeName));
definitionFiles.addAll(configuration.getDefinitionFiles()); definitionFiles.addAll(configuration.getDefinitionFiles());
for(String file : definitionFiles){
loadDefinitionFile(file);
}
} }
@Override @Override