diff --git a/src/main/java/org/nsvformat/Nsv.java b/src/main/java/org/nsvformat/Nsv.java index ce2b268..32d9530 100644 --- a/src/main/java/org/nsvformat/Nsv.java +++ b/src/main/java/org/nsvformat/Nsv.java @@ -24,6 +24,13 @@ public static List> decode(String s) { } } + if (start < s.length()) { + row.add(unescape(s.substring(start))); + } + if (!row.isEmpty()) { + data.add(row); + } + return data; } diff --git a/src/test/java/org/nsvformat/DecodeTest.java b/src/test/java/org/nsvformat/DecodeTest.java index e49c4ce..3df34a0 100644 --- a/src/test/java/org/nsvformat/DecodeTest.java +++ b/src/test/java/org/nsvformat/DecodeTest.java @@ -114,4 +114,14 @@ public void testDecodeOneOne() { List> expected = List.of(List.of("")); assertEquals(expected, Nsv.decode(input)); } + + @Test + public void testDecodeNoTrailingNewline() { + String input = "a\nb\nc\n\nd\ne\nf"; + List> expected = List.of( + List.of("a", "b", "c"), + List.of("d", "e", "f") + ); + assertEquals(expected, Nsv.decode(input)); + } }