summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2024-03-03 11:23:03 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2024-03-03 11:23:03 -0500
commit4a17e32274f991014edcfa22402d7207361f69f1 (patch)
treeb3bda9bc045882bcef140503b665f82898ba8d12
parent0b296213ce91c2aa0e596419addd42fc4b4f5e1a (diff)
Add + and - to prefixes
This was added to be consistent with the data file spec, which was changed for consistency with unit expressions. It may not be a common expression, but it's a bit weird that you can use +/- in units but not prefixes, even though they're in the same file!
-rw-r--r--src/main/java/sevenUnits/unit/UnitDatabase.java8
-rw-r--r--src/main/java/sevenUnits/unit/UnitPrefix.java16
2 files changed, 21 insertions, 3 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java
index 12b78a7..ea0aa7f 100644
--- a/src/main/java/sevenUnits/unit/UnitDatabase.java
+++ b/src/main/java/sevenUnits/unit/UnitDatabase.java
@@ -1256,11 +1256,13 @@ public final class UnitDatabase {
* @since v0.2.0
*/
private final ExpressionParser<UnitPrefix> prefixExpressionParser = new ExpressionParser.Builder<>(
- this::getPrefix).addBinaryOperator("*", (o1, o2) -> o1.times(o2), 0)
+ this::getPrefix).addBinaryOperator("+", (o1, o2) -> o1.plus(o2), 0)
+ .addBinaryOperator("-", (o1, o2) -> o1.minus(o2), 0)
+ .addBinaryOperator("*", (o1, o2) -> o1.times(o2), 1)
.addSpaceFunction("*")
- .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 0)
+ .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 1)
.addBinaryOperator("^",
- (o1, o2) -> o1.toExponent(o2.getMultiplier()), 1)
+ (o1, o2) -> o1.toExponent(o2.getMultiplier()), 2)
.build();
/**
diff --git a/src/main/java/sevenUnits/unit/UnitPrefix.java b/src/main/java/sevenUnits/unit/UnitPrefix.java
index e1f7788..824f60b 100644
--- a/src/main/java/sevenUnits/unit/UnitPrefix.java
+++ b/src/main/java/sevenUnits/unit/UnitPrefix.java
@@ -158,6 +158,22 @@ public final class UnitPrefix implements Nameable {
}
/**
+ * Adds {@code other} to this prefix and returns the result.
+ * @since 2024-03-03
+ */
+ public UnitPrefix plus(final UnitPrefix other) {
+ return valueOf(this.getMultiplier() + other.getMultiplier());
+ }
+
+ /**
+ * Subtracts {@code other} from this prefix and returns the result.
+ * @since 2024-03-03
+ */
+ public UnitPrefix minus(final UnitPrefix other) {
+ return valueOf(this.getMultiplier() - other.getMultiplier());
+ }
+
+ /**
* Multiplies this prefix by {@code other}.
*
* @param other prefix to multiply by