diff options
author | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2024-03-23 16:02:51 -0500 |
---|---|---|
committer | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2024-03-23 16:03:45 -0500 |
commit | cc45a65c78c578eb404d8773b22e5b046917621f (patch) | |
tree | 6f53d7c974d930731ad41e80b53407c3458f35d9 /src/main/java/sevenUnits/unit/UnitDatabase.java | |
parent | e1a96524ad9000689e081a6bf52792a886c07222 (diff) |
Add fractions using | to expressions
| is like /, but with higher precedence. This feature is a part of GNU
Units, and was included in 7Units for compatibility.
Diffstat (limited to 'src/main/java/sevenUnits/unit/UnitDatabase.java')
-rw-r--r-- | src/main/java/sevenUnits/unit/UnitDatabase.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java index 7e76729..d738b78 100644 --- a/src/main/java/sevenUnits/unit/UnitDatabase.java +++ b/src/main/java/sevenUnits/unit/UnitDatabase.java @@ -1073,7 +1073,7 @@ public final class UnitDatabase { // add data to expression replacements static { // add spaces around operators - for (final String operator : Arrays.asList("\\*", "/", "\\^")) { + for (final String operator : Arrays.asList("\\*", "/", "\\|", "\\^")) { EXPRESSION_REPLACEMENTS.put(Pattern.compile(operator), " " + operator + " "); } @@ -1231,6 +1231,7 @@ public final class UnitDatabase { .addBinaryOperator("*", (o1, o2) -> o1.times(o2), 1) .addSpaceFunction("*") .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 1) + .addBinaryOperator("|", (o1, o2) -> o1.dividedBy(o2), 3) .addBinaryOperator("^", UnitDatabase::exponentiateUnits, 2) .build(); @@ -1246,6 +1247,7 @@ public final class UnitDatabase { .addBinaryOperator("*", (o1, o2) -> o1.times(o2), 1) .addSpaceFunction("*") .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 1) + .addBinaryOperator("|", (o1, o2) -> o1.dividedBy(o2), 3) .addBinaryOperator("^", UnitDatabase::exponentiateUnitValues, 2) .build(); @@ -1261,6 +1263,7 @@ public final class UnitDatabase { .addBinaryOperator("*", (o1, o2) -> o1.times(o2), 1) .addSpaceFunction("*") .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 1) + .addBinaryOperator("|", (o1, o2) -> o1.dividedBy(o2), 3) .addBinaryOperator("^", (o1, o2) -> o1.toExponent(o2.getMultiplier()), 2) .build(); @@ -1275,6 +1278,7 @@ public final class UnitDatabase { this::getDimension).addBinaryOperator("*", (o1, o2) -> o1.times(o2), 0) .addSpaceFunction("*") .addBinaryOperator("/", (o1, o2) -> o1.dividedBy(o2), 0) + .addBinaryOperator("|", (o1, o2) -> o1.dividedBy(o2), 2) .addNumericOperator("^", (o1, o2) -> { int exponent = (int) Math.round(o2.value()); return o1.toExponent(exponent); @@ -1570,7 +1574,7 @@ public final class UnitDatabase { // FIXME the previous operaton also breaks stuff like "1e-5" for (int i = 0; i < modifiedExpression.length(); i++) { if (modifiedExpression.charAt(i) == '-' - && (i < 2 || Arrays.asList('+', '-', '*', '/', '^') + && (i < 2 || Arrays.asList('+', '-', '*', '/', '|', '^') .contains(modifiedExpression.charAt(i - 2)))) { // found a broken negative number modifiedExpression = modifiedExpression.substring(0, i + 1) @@ -1870,7 +1874,7 @@ public final class UnitDatabase { // (i.e. -2 becomes - 2) for (int i = 0; i < modifiedExpression.length(); i++) { if (modifiedExpression.charAt(i) == '-' - && (i < 2 || Arrays.asList('+', '-', '*', '/', '^') + && (i < 2 || Arrays.asList('+', '-', '*', '/', '|', '^') .contains(modifiedExpression.charAt(i - 2)))) { // found a broken negative number modifiedExpression = modifiedExpression.substring(0, i + 1) |