diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index 042ebc76..e1d3ce48 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -1900,7 +1900,7 @@ public class Expression implements Cloneable addUnaryFunction("pairs", v -> { if (v instanceof MapValue) - return new ListValue(((MapValue) v).getMap().entrySet().stream().map( + return ListValue.wrap(((MapValue) v).getMap().entrySet().stream().map( (p) -> ListValue.of(p.getKey(), p.getValue()) ).collect(Collectors.toList())); throw new InternalExpressionException("pairs applies only to maps"); @@ -1920,7 +1920,7 @@ public class Expression implements Cloneable throw new InternalExpressionException("Cannot access elements of a non-container"); }); - //Deprecated, use "get" instead + //Deprecated, use "get" instead, or . operator addBinaryFunction("element", (v1, v2) -> { if (!(v1 instanceof ListValue)) diff --git a/src/main/java/carpet/script/Tokenizer.java b/src/main/java/carpet/script/Tokenizer.java index b84be668..0a1f7524 100644 --- a/src/main/java/carpet/script/Tokenizer.java +++ b/src/main/java/carpet/script/Tokenizer.java @@ -94,7 +94,8 @@ public class Tokenizer implements Iterator boolean isHex = false; - if (Character.isDigit(ch) || (ch == decimalSeparator && Character.isDigit(peekNextChar()))) + if (Character.isDigit(ch)) // || (ch == decimalSeparator && Character.isDigit(peekNextChar()))) + // decided to no support this notation to favour element access via . operator { if (ch == '0' && (peekNextChar() == 'x' || peekNextChar() == 'X')) isHex = true; diff --git a/src/main/java/carpet/script/value/ListValue.java b/src/main/java/carpet/script/value/ListValue.java index a875e519..fce10b91 100644 --- a/src/main/java/carpet/script/value/ListValue.java +++ b/src/main/java/carpet/script/value/ListValue.java @@ -216,14 +216,7 @@ public class ListValue extends AbstractListValue implements ContainerValueInterf { if (o instanceof ListValue) { - ListValue ol = (ListValue)o; - int this_size = this.getItems().size(); - int o_size = ol.getItems().size(); - if (this_size != o_size) return false; - if (this_size == 0) return true; - for (int i = 0; i < this_size; i++) - if (!this.items.get(i).equals(ol.items.get(i))) return false; - return true; + return getItems().equals(((ListValue) o).getItems()); } return false; } diff --git a/src/main/java/carpet/script/value/MapValue.java b/src/main/java/carpet/script/value/MapValue.java index adc6ffb7..4c782770 100644 --- a/src/main/java/carpet/script/value/MapValue.java +++ b/src/main/java/carpet/script/value/MapValue.java @@ -124,12 +124,7 @@ public class MapValue extends AbstractListValue implements ContainerValueInterfa { if (o instanceof MapValue) { - MapValue ol = (MapValue)o; - int this_size = this.map.keySet().size(); - int o_size = ol.map.keySet().size(); - if (this_size != o_size) return false; - if (this_size == 0) return true; - return this.map.keySet().equals(ol.map.keySet()); + return map.equals(((MapValue) o).map); } return false; }