From cdafc9cbaf325dd792c8c4b1722eac9d187df36f Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Thu, 1 May 2025 17:32:20 +0200 Subject: [PATCH] Add constructor to JsonArray & JsonMap for bettr developer experience --- .../framework/utils/json/JsonArray.java | 13 +++++++++-- .../peerat/framework/utils/json/JsonMap.java | 5 ++++ .../framework/utils/json/JsonParser.java | 23 ++++++++++--------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/dev/peerat/framework/utils/json/JsonArray.java b/src/dev/peerat/framework/utils/json/JsonArray.java index 7b503bc..9e035c2 100644 --- a/src/dev/peerat/framework/utils/json/JsonArray.java +++ b/src/dev/peerat/framework/utils/json/JsonArray.java @@ -3,16 +3,25 @@ package dev.peerat.framework.utils.json; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; -import java.util.List; public class JsonArray extends Json{ - private List list; + private Collection list; public JsonArray(){ this.list = new ArrayList<>(); } + public JsonArray(Collection collection){ + this(); + this.list.addAll(collection); + } + + public JsonArray(Iterator iterator){ + this(); + while(iterator.hasNext()) this.list.add(iterator.next()); + } + public Collection toList(){ return (Collection) this.list; } diff --git a/src/dev/peerat/framework/utils/json/JsonMap.java b/src/dev/peerat/framework/utils/json/JsonMap.java index 994eb7e..2c2296f 100644 --- a/src/dev/peerat/framework/utils/json/JsonMap.java +++ b/src/dev/peerat/framework/utils/json/JsonMap.java @@ -14,6 +14,11 @@ public class JsonMap extends Json{ this.map = new HashMap<>(); } + public JsonMap(Map map){ + this(); + for(Entry entry : map.entrySet()) this.map.put(entry.getKey(), entry.getValue()); + } + public Set> entries(){ return this.map.entrySet(); } diff --git a/src/dev/peerat/framework/utils/json/JsonParser.java b/src/dev/peerat/framework/utils/json/JsonParser.java index b3a4c02..db6722c 100644 --- a/src/dev/peerat/framework/utils/json/JsonParser.java +++ b/src/dev/peerat/framework/utils/json/JsonParser.java @@ -1,5 +1,7 @@ package dev.peerat.framework.utils.json; +import static be.jeffcheasey88.peeratcode.parser.TokenType.*; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -8,7 +10,6 @@ import java.util.Map.Entry; import be.jeffcheasey88.peeratcode.parser.Parser; import be.jeffcheasey88.peeratcode.parser.Token; -import be.jeffcheasey88.peeratcode.parser.TokenType; import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree; import be.jeffcheasey88.peeratcode.parser.state.StateTree; @@ -43,16 +44,16 @@ public class JsonParser extends Parser{ .then(content_array_element); content.then(new RedirectStateTree<>(base, (global, local) -> global.set(local.get()))).end(); - content.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.STRING), (bag, token) -> bag.set(token))).end(); - content.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.CHAR), (bag, token) -> bag.set(token))).end(); - StateTree number = content.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME), (bag, token) -> bag.set(token))); + content.then((validator) -> validator.validate((token) -> token.getType().equals(STRING), (bag, token) -> bag.set(token))).end(); + content.then((validator) -> validator.validate((token) -> token.getType().equals(CHAR), (bag, token) -> bag.set(token))).end(); + StateTree number = content.then((validator) -> validator.validate((token) -> token.getType().equals(NAME), (bag, token) -> bag.set(token))); number.end(); number.then((validator) -> validator.validate((token) -> token.getValue().equals("."), (bag, token) -> bag.set(bag.get().concat(token)))) - .then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.NAME), (bag, token) -> bag.set(bag.get().concat(token)))) + .then((validator) -> validator.validate((token) -> token.getType().equals(NAME), (bag, token) -> bag.set(bag.get().concat(token)))) .end(); StateTree mapper = new StateTree<>(); - StateTree mapper_key = mapper.then((validator) -> validator.validate((token) -> token.getType().equals(TokenType.STRING), (bag, token) -> { + StateTree mapper_key = mapper.then((validator) -> validator.validate((token) -> token.getType().equals(STRING), (bag, token) -> { Map map = bag.get("map"); if(map == null){ map = new HashMap<>(); @@ -105,20 +106,20 @@ public class JsonParser extends Parser{ if(value instanceof Token){ Token token = (Token) value; String content = token.getValue(); - if(token.getType().equals(TokenType.STRING)){ + if(token.getType().equals(STRING)){ return content; - }else if(token.getType().equals(TokenType.CHAR)){ + }else if(token.getType().equals(CHAR)){ return content.charAt(0); }else{ try{ return Long.parseLong(content); - }catch(Exception _){ + }catch(Exception e){ try { return Double.parseDouble(content); - }catch(Exception __){ + }catch(Exception ex){ try{ return Boolean.parseBoolean(content); - }catch(Exception ___){} + }catch(Exception exc){} } } }