summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnits/unit/Unit.java
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2022-07-17 16:26:49 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2022-07-17 16:26:49 -0500
commita5f088ae43c285bc3708303bdcc99bd8936477d2 (patch)
tree8d3ac45478468fe772618aa6d44c4879152738b5 /src/main/java/sevenUnits/unit/Unit.java
parentcc79db65bc347c50267d0a719278ef1d90cf6b1a (diff)
parentb76c06eb393c7c6d9a3ece66efec1fd20311b7e8 (diff)
Merge branch 'release-0.4.0' into stable
Diffstat (limited to 'src/main/java/sevenUnits/unit/Unit.java')
-rw-r--r--src/main/java/sevenUnits/unit/Unit.java44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/main/java/sevenUnits/unit/Unit.java b/src/main/java/sevenUnits/unit/Unit.java
index 005b6f7..14478ba 100644
--- a/src/main/java/sevenUnits/unit/Unit.java
+++ b/src/main/java/sevenUnits/unit/Unit.java
@@ -22,6 +22,8 @@ import java.util.Objects;
import java.util.function.DoubleUnaryOperator;
import sevenUnits.utils.DecimalComparison;
+import sevenUnits.utils.NameSymbol;
+import sevenUnits.utils.Nameable;
import sevenUnits.utils.ObjectProduct;
/**
@@ -188,7 +190,7 @@ public abstract class Unit implements Nameable {
*
* @implSpec This method is used by {@link #convertTo}, and its behaviour
* affects the behaviour of {@code convertTo}.
- *
+ *
* @param value value expressed in <b>base</b> unit
* @return value expressed in <b>this</b> unit
* @since 2018-12-22
@@ -204,7 +206,7 @@ public abstract class Unit implements Nameable {
* {@code other.convertFromBase(this.convertToBase(value))}.
* Therefore, overriding either of those methods will change the
* output of this method.
- *
+ *
* @param other unit to convert to
* @param value value to convert
* @return converted value
@@ -231,7 +233,7 @@ public abstract class Unit implements Nameable {
* {@code other.convertFromBase(this.convertToBase(value))}.
* Therefore, overriding either of those methods will change the
* output of this method.
- *
+ *
* @param other unitlike form to convert to
* @param value value to convert
* @param <W> type of value to convert to
@@ -266,7 +268,7 @@ public abstract class Unit implements Nameable {
*
* @implSpec This method is used by {@link #convertTo}, and its behaviour
* affects the behaviour of {@code convertTo}.
- *
+ *
* @param value value expressed in <b>this</b> unit
* @return value expressed in <b>base</b> unit
* @since 2018-12-22
@@ -347,16 +349,34 @@ public abstract class Unit implements Nameable {
.equals(Math.log10(linear.getConversionFactor()) % 1.0, 0);
}
+ /**
+ * @return a string representing this unit's definition
+ * @since 2022-03-10
+ */
+ public String toDefinitionString() {
+ if (!this.unitBase.getNameSymbol().isEmpty())
+ return "derived from " + this.unitBase.getName();
+ else
+ return "derived from "
+ + this.getBase().toString(BaseUnit::getShortName);
+ }
+
+ /**
+ * @return a string containing both this unit's name and its definition
+ * @since 2022-03-10
+ */
+ public final String toFullString() {
+ return this.toString() + " (" + this.toDefinitionString() + ")";
+ }
+
@Override
public String toString() {
- return this.getPrimaryName().orElse("Unnamed unit")
- + (this.getSymbol().isPresent()
- ? String.format(" (%s)", this.getSymbol().get())
- : "")
- + ", derived from "
- + this.getBase().toString(u -> u.getSymbol().get())
- + (this.getOtherNames().isEmpty() ? ""
- : ", also called " + String.join(", ", this.getOtherNames()));
+ if (this.nameSymbol.getPrimaryName().isPresent()
+ && this.nameSymbol.getSymbol().isPresent())
+ return this.nameSymbol.getPrimaryName().orElseThrow() + " ("
+ + this.nameSymbol.getSymbol().orElseThrow() + ")";
+ else
+ return this.getName();
}
/**