diff options
Diffstat (limited to 'dice/src')
5 files changed, 47 insertions, 41 deletions
diff --git a/dice/src/example/java/bjc/dicelang/neodice/DieBoxCLI.java b/dice/src/example/java/bjc/dicelang/neodice/DieBoxCLI.java index 2c67e7f..edb7e5f 100644 --- a/dice/src/example/java/bjc/dicelang/neodice/DieBoxCLI.java +++ b/dice/src/example/java/bjc/dicelang/neodice/DieBoxCLI.java @@ -241,7 +241,7 @@ public class DieBoxCLI { } } - private DieBoxException handleUnknownCommand(String command) { + private static DieBoxException handleUnknownCommand(String command) { StringBuilder msg = new StringBuilder("Unknown command "); msg.append(command); msg.append("."); @@ -255,7 +255,7 @@ public class DieBoxCLI { return new DieBoxException(msg.toString()); } - private StatementValue parseActualLiteral(String litText) { + private static StatementValue parseActualLiteral(String litText) { if (INT_PATTERN.matcher(litText).matches()) { try { int val = Integer.parseInt(litText); @@ -266,9 +266,9 @@ public class DieBoxCLI { "Improper integer literal (%s)", litText); } - } else { - throw new DieBoxException("Unknown literal format (%s)", - litText); } + + throw new DieBoxException("Unknown literal format (%s)", + litText); } }
\ No newline at end of file diff --git a/dice/src/example/java/bjc/dicelang/neodice/commands/PolyhedralDieCommand.java b/dice/src/example/java/bjc/dicelang/neodice/commands/PolyhedralDieCommand.java index e0f66b1..ed74507 100644 --- a/dice/src/example/java/bjc/dicelang/neodice/commands/PolyhedralDieCommand.java +++ b/dice/src/example/java/bjc/dicelang/neodice/commands/PolyhedralDieCommand.java @@ -18,24 +18,24 @@ public class PolyhedralDieCommand implements Command { public StatementValue execute(Iterator<String> words, DieBoxCLI state) { if (!words.hasNext()) { throw new DieBoxException("Number of sides to polyhedral-die must be provided"); - } else { - StatementValue sideValue = state.runStatement(words); + } + + StatementValue sideValue = state.runStatement(words); + + if (sideValue.type == INTEGER) { + int numSides = ((IntegerStatementValue)sideValue).value; + + if (numSides < 0) throw new DieBoxException("Number of sides to polyhedral-die was not valid (must be less than 0, was %d)", numSides); + + Die<StatementValue> die = Die + .polyhedral(numSides) + .transform(IntegerStatementValue::new); - if (sideValue.type == INTEGER) { - int numSides = ((IntegerStatementValue)sideValue).value; - - if (numSides < 0) throw new DieBoxException("Number of sides to polyhedral-die was not valid (must be less than 0, was %d)", numSides); - - Die<StatementValue> die = Die - .polyhedral(numSides) - .transform(IntegerStatementValue::new); - - return new DieStatementValue(INTEGER, die); - } else { - throw new DieBoxException("Number of sides to polyhedral-die wasn't an integer (was %s, of type %s)", - sideValue, sideValue.type); - } + return new DieStatementValue(INTEGER, die); } + + throw new DieBoxException("Number of sides to polyhedral-die wasn't an integer (was %s, of type %s)", + sideValue, sideValue.type); } @Override diff --git a/dice/src/example/java/bjc/dicelang/neodice/commands/RollCommand.java b/dice/src/example/java/bjc/dicelang/neodice/commands/RollCommand.java index cec7c48..275c53e 100644 --- a/dice/src/example/java/bjc/dicelang/neodice/commands/RollCommand.java +++ b/dice/src/example/java/bjc/dicelang/neodice/commands/RollCommand.java @@ -18,26 +18,26 @@ public class RollCommand implements Command { public StatementValue execute(Iterator<String> words, DieBoxCLI state) { if (!words.hasNext()) { throw new DieBoxException("Roll must be provided an argument to roll"); - } else { - StatementValue toRoll = state.runStatement(words); + } + + StatementValue toRoll = state.runStatement(words); + + if (toRoll.type == DIE) { + DieStatementValue die = (DieStatementValue) toRoll; + + return die.value.roll(state.rng); + } else if (toRoll.type == DIEPOOL) { + DiePoolStatementValue pool = (DiePoolStatementValue) toRoll; - if (toRoll.type == DIE) { - DieStatementValue die = (DieStatementValue) toRoll; - - return die.value.roll(state.rng); - } else if (toRoll.type == DIEPOOL) { - DiePoolStatementValue pool = (DiePoolStatementValue) toRoll; - - StatementValue[] values = pool.value - .roll(state.rng) - .toArray((sz) -> new StatementValue[sz]); - - return new ArrayStatementValue<>(pool.elementType, - values); - } else { - throw new DieBoxException("Roll was provided something that wasn't rollable (only DIE and DIEPOOL objects are rollable) (was %s, of type %s)", - toRoll, toRoll.type); - } + StatementValue[] values = pool.value + .roll(state.rng) + .toArray((sz) -> new StatementValue[sz]); + + return new ArrayStatementValue<>(pool.elementType, + values); + } else { + throw new DieBoxException("Roll was provided something that wasn't rollable (only DIE and DIEPOOL objects are rollable) (was %s, of type %s)", + toRoll, toRoll.type); } } diff --git a/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java b/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java index 114475c..171dac6 100644 --- a/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java +++ b/dice/src/example/java/bjc/dicelang/neodice/statements/DiePoolStatementValue.java @@ -7,7 +7,7 @@ import java.util.*; import bjc.dicelang.neodice.*; /** - * A StatementValue that represesnts a die pool + * A StatementValue that represents a die pool * @author Ben Culkin * */ diff --git a/dice/src/main/java/module-info.java b/dice/src/main/java/module-info.java index 74cc1b9..ab1d3b4 100644 --- a/dice/src/main/java/module-info.java +++ b/dice/src/main/java/module-info.java @@ -1,3 +1,9 @@ +/** + * An implementation for various sorts of dice rolling. + * + * @author bjculkin + * + */ module dicelang.dice { exports bjc.dicelang.neodice; exports bjc.dicelang.neodice.statements; |
