From 8f8c8cd08f121852769d6febf990dd1a73d8415d Mon Sep 17 00:00:00 2001 From: uw4 Date: Wed, 22 May 2024 16:20:22 +0200 Subject: [PATCH] Correct behavior of $append function. #37 The discrepancy is caused by a (legacy) condition in the $append function. This was introduced to hide an older parser issue (which was fixed in the meantime) so it is no longer needed --- src/main/java/com/dashjoin/jsonata/Functions.java | 8 +------- src/test/java/com/dashjoin/jsonata/ArrayTest.java | 2 -- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/main/java/com/dashjoin/jsonata/Functions.java b/src/main/java/com/dashjoin/jsonata/Functions.java index 998daf9..19800c7 100644 --- a/src/main/java/com/dashjoin/jsonata/Functions.java +++ b/src/main/java/com/dashjoin/jsonata/Functions.java @@ -2080,19 +2080,13 @@ public static Object append(Object arg1, Object arg2) { if (!(arg2 instanceof List)) { arg2 = new JList<>(Arrays.asList(arg2)); } - // else - // // Arg2 was a list: add it as a list element (don't flatten) - // ((List)arg1).add((List)arg2); // Shortcut: if (((List)arg1).isEmpty() && (arg2 instanceof Utils.RangeList)) return arg2; arg1 = new JList<>((List)arg1); // create a new copy! - if (arg2 instanceof JList && ((JList)arg2).cons) - ((List)arg1).add(arg2); - else - ((List)arg1).addAll((List)arg2); + ((List)arg1).addAll((List)arg2); return arg1; } diff --git a/src/test/java/com/dashjoin/jsonata/ArrayTest.java b/src/test/java/com/dashjoin/jsonata/ArrayTest.java index 88341d0..7789891 100644 --- a/src/test/java/com/dashjoin/jsonata/ArrayTest.java +++ b/src/test/java/com/dashjoin/jsonata/ArrayTest.java @@ -4,12 +4,10 @@ import static java.util.Arrays.asList; import static java.util.Map.of; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; public class ArrayTest { - @Disabled @Test public void testArray() { Jsonata expr1 = jsonata("{'key': $append($.[{'x': 'y'}],$.[{'a': 'b'}])}");