diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-08 21:29:07 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-08 21:29:07 +0000 |
| commit | 34c97fbce322b16821563a8bafe91a31b4084806 (patch) | |
| tree | 0be43d6297e30bd46077dd5f9227a0458a319bac | |
| parent | bf3645905d5384d25b20e572803b6886c476e057 (diff) | |
Use static constructor for BooleanInterpreterValue
6 files changed, 20 insertions, 19 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java index 03a0289..c94b21d 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java @@ -10,14 +10,23 @@ public final class BooleanInterpreterValue implements InterpreterValue { public static final BooleanInterpreterValue TRUE = new BooleanInterpreterValue(true); public static final BooleanInterpreterValue FALSE = new BooleanInterpreterValue(false); + public static BooleanInterpreterValue of(final boolean value) { + return value ? TRUE : FALSE; + } + private static final ConcreteType TYPE = ConcreteType.builder(BooleanInterpreterValue.class, "boolean") - .method("negate", Collections.emptyList(), (environment, arguments) -> - new BooleanInterpreterValue(!arguments.getReceiver().getValue())) + .method("negate", Collections.emptyList(), (environment, arguments) -> + of(!arguments.getReceiver().getValue())) .build(); + private final boolean value; - + + private BooleanInterpreterValue(final boolean value) { + this.value = value; + } + public boolean getValue() { return value; } @@ -42,10 +51,6 @@ public final class BooleanInterpreterValue implements InterpreterValue { throw new NoSuchField(fieldName); } - public BooleanInterpreterValue(final boolean value) { - this.value = value; - } - @java.lang.Override public boolean equals(final java.lang.Object o) { if (o == this) return true; diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java index cb3172d..228dbb7 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java @@ -39,9 +39,9 @@ public class BoxedIntegerInterpreterValue { if (right.getType().getName().equals(ObjectValues.BOXED_INT)) { IntegerInterpreterValue leftValue = (IntegerInterpreterValue)arguments.getReceiver().getField("value"); IntegerInterpreterValue rightValue = (IntegerInterpreterValue)right.getField("value"); - return new BooleanInterpreterValue(leftValue.getValue() == rightValue.getValue()); + return BooleanInterpreterValue.of(leftValue.getValue() == rightValue.getValue()); } else { - return new BooleanInterpreterValue(false); + return BooleanInterpreterValue.of(false); } }) diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java index 4349d5d..5cc14de 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java @@ -10,7 +10,6 @@ import org.zwobble.couscous.values.ObjectValues; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; -import static java.util.Arrays.asList; import static org.zwobble.couscous.util.ExtraLists.list; public final class IntegerInterpreterValue implements InterpreterValue { @@ -31,7 +30,7 @@ public final class IntegerInterpreterValue implements InterpreterValue { if (right instanceof IntegerInterpreterValue) { return integerEquals(arguments, ((IntegerInterpreterValue)right)); } else { - return new BooleanInterpreterValue(false); + return BooleanInterpreterValue.of(false); } }) .method(Operator.EQUALS.getMethodName(), list(IntegerValue.REF), @@ -52,7 +51,7 @@ public final class IntegerInterpreterValue implements InterpreterValue { .build(); private static BooleanInterpreterValue integerEquals(MethodCallArguments<IntegerInterpreterValue> arguments, IntegerInterpreterValue right) { - return new BooleanInterpreterValue(arguments.getReceiver().getValue() == right.getValue()); + return BooleanInterpreterValue.of(arguments.getReceiver().getValue() == right.getValue()); } private static @@ -64,7 +63,7 @@ public final class IntegerInterpreterValue implements InterpreterValue { private static BiFunction<Environment, MethodCallArguments<IntegerInterpreterValue>, InterpreterValue> infixReturningBoolean(BiFunction<Integer, Integer, Boolean> func) { - return infix((left, right) -> new BooleanInterpreterValue(func.apply(left, right))); + return infix((left, right) -> BooleanInterpreterValue.of(func.apply(left, right))); } private static diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java index 023dec7..75f8af4 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java @@ -1,17 +1,14 @@ package org.zwobble.couscous.interpreter.values; -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; import org.zwobble.couscous.values.ObjectValues; -import static java.util.Arrays.asList; import static org.zwobble.couscous.util.ExtraLists.list; public class InternalCouscousInterpreterValue { public static final ConcreteType TYPE = ConcreteType.classBuilder("_couscous") .staticMethod("same", list(ObjectValues.OBJECT, ObjectValues.OBJECT), (environment, arguments) -> - new BooleanInterpreterValue(arguments.get(0) == arguments.get(1))) + BooleanInterpreterValue.of(arguments.get(0) == arguments.get(1))) .build(); } diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java b/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java index 14d1085..6b9d0b5 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/InterpreterValues.java @@ -34,7 +34,7 @@ public class InterpreterValues { @Override public InterpreterValue visit(BooleanValue value) { - return new BooleanInterpreterValue(value.getValue()); + return BooleanInterpreterValue.of(value.getValue()); } @Override diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java index 3aaa073..ff2617e 100644 --- a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java +++ b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java @@ -29,7 +29,7 @@ public final class StringInterpreterValue implements InterpreterValue { .method("equals", list(ObjectValues.OBJECT), (environment, arguments) -> { InterpreterValue right = arguments.get(0); if (right instanceof StringInterpreterValue) { - return new BooleanInterpreterValue(arguments.getReceiver().value.equals(((StringInterpreterValue)right).value)); + return BooleanInterpreterValue.of(arguments.getReceiver().value.equals(((StringInterpreterValue)right).value)); } else { return InterpreterValues.FALSE; } |
