JsonHandler preserves line numbers
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 16 Sep 2019 15:23:29 +0000 (17:23 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 16 Sep 2019 15:23:29 +0000 (17:23 +0200)
plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java

index 20491ce..d2d6de3 100644 (file)
@@ -39,8 +39,13 @@ public class JsonHandler
 
        public static <T> T fromJson(String src, Class<T> type)
        {
-               // throw away legacy version line
-               String rawJson = src.lines().dropWhile(s -> s.length() == 0 || s.charAt(0) != '{').collect(Collectors.joining());
+               // throw away legacy version line, but keep line numbers
+               int linesBeforeJsonStart = (int) src.lines().takeWhile(s -> s.length() == 0 || s.charAt(0) != '{').count();
+               String rawJson;
+               if (linesBeforeJsonStart == 0)
+                       rawJson = src;
+               else
+                       rawJson = "\n".repeat(linesBeforeJsonStart) + src.lines().skip(linesBeforeJsonStart).collect(Collectors.joining("\n"));
                return parser.fromJson(rawJson, type);
        }