summaryrefslogtreecommitdiff
path: root/base/src/bjc/dicelang/dice/DieExpression.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-25 12:10:14 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-25 12:10:14 -0300
commit7bda9de511a5642efb297eae98c6ea7c42b27754 (patch)
treedff1aa772b9ac088c5bd07b8d10d944cbff89f96 /base/src/bjc/dicelang/dice/DieExpression.java
parentf028ea6dc555fc5192a96b00b8e96e90dbf6de55 (diff)
Start switch to maven modules
Diffstat (limited to 'base/src/bjc/dicelang/dice/DieExpression.java')
-rw-r--r--base/src/bjc/dicelang/dice/DieExpression.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/base/src/bjc/dicelang/dice/DieExpression.java b/base/src/bjc/dicelang/dice/DieExpression.java
new file mode 100644
index 0000000..b8faeda
--- /dev/null
+++ b/base/src/bjc/dicelang/dice/DieExpression.java
@@ -0,0 +1,69 @@
+package bjc.dicelang.dice;
+
+import java.util.Arrays;
+
+/*
+ * @NOTE
+ * I'm not a particularly large fan of sticking everything on this class
+ * and just documenting which fields are tied together in a non-obvious
+ * way. I think a class hierarchy might be better, but I am unsure of the
+ * details.
+ */
+/**
+ * Represents either a die or a die list.
+ *
+ * @author Ben Culkin
+ */
+public class DieExpression {
+ /** Is this expression a list? */
+ public final boolean isList;
+
+ /** The scalar value in this expression, if there is one. */
+ public Die scalar;
+ /** The list value in this expression, if there is one. */
+ public DieList list;
+
+ /**
+ * Create a scalar die expression.
+ *
+ * @param scal
+ * The scalar value of this expression.
+ */
+ public DieExpression(final Die scal) {
+ isList = false;
+ scalar = scal;
+ }
+
+ /**
+ * Create a list die expression.
+ *
+ * @param lst
+ * The list value of this expression.
+ */
+ public DieExpression(final DieList lst) {
+ isList = true;
+ list = lst;
+ }
+
+ @Override
+ public String toString() {
+ if (isList) {
+ return list.toString();
+ }
+
+ return scalar.toString();
+ }
+
+ /**
+ * Get the value of this expression as a string.
+ *
+ * @return The value of the expression as a string.
+ */
+ public String value() {
+ if (isList) {
+ return Arrays.toString(list.roll());
+ }
+
+ return Long.toString(scalar.roll());
+ }
+}