From 64027663716c53c9b004aaf57740fea9eb31c6df Mon Sep 17 00:00:00 2001 From: philippe lhardy Date: Wed, 4 Nov 2020 13:39:04 +0100 Subject: [PATCH] wrap lua object into java object - to ease handling wrap lua object to java object --- java/org/artisanlogiciel/lua/LuaNumber.java | 5 +++ java/org/artisanlogiciel/lua/LuaObject.java | 5 +++ java/org/artisanlogiciel/lua/LuaSequence.java | 41 ++++++++++++++++++- java/org/artisanlogiciel/lua/LuaString.java | 5 +++ java/org/artisanlogiciel/lua/LuaTuple.java | 11 +++++ java/org/artisanlogiciel/lua/Parser.java | 2 + 6 files changed, 67 insertions(+), 2 deletions(-) diff --git a/java/org/artisanlogiciel/lua/LuaNumber.java b/java/org/artisanlogiciel/lua/LuaNumber.java index 44d46f6..7efe891 100644 --- a/java/org/artisanlogiciel/lua/LuaNumber.java +++ b/java/org/artisanlogiciel/lua/LuaNumber.java @@ -14,4 +14,9 @@ extends LuaObject { public String toString() { return "" + number ; } + + @Override + public Object wrapToJava() { + return new Integer(number); + } } diff --git a/java/org/artisanlogiciel/lua/LuaObject.java b/java/org/artisanlogiciel/lua/LuaObject.java index 40ab3de..75ef5f4 100644 --- a/java/org/artisanlogiciel/lua/LuaObject.java +++ b/java/org/artisanlogiciel/lua/LuaObject.java @@ -1,4 +1,9 @@ package org.artisanlogiciel.lua; public class LuaObject { + + public Object wrapToJava() + { + return null; + } } diff --git a/java/org/artisanlogiciel/lua/LuaSequence.java b/java/org/artisanlogiciel/lua/LuaSequence.java index b4236b6..f695e9d 100644 --- a/java/org/artisanlogiciel/lua/LuaSequence.java +++ b/java/org/artisanlogiciel/lua/LuaSequence.java @@ -1,7 +1,6 @@ package org.artisanlogiciel.lua; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class LuaSequence extends LuaObject{ @@ -19,7 +18,45 @@ extends LuaObject{ System.err.println("adding null tuple"); } items.add(object); + } + public boolean isMap() + { + return ( items.get(0) instanceof LuaTuple ); + } + + public HashMap wrapTodHashMap() + { + HashMap map = new HashMap<>(items.size()); + + for ( LuaObject item : items) + { + if (item instanceof LuaTuple ) + { + LuaTuple tuple = (LuaTuple) item; + tuple.addInMap(map); + } + } + + return map; + } + + public List wrapToList() + { + List list = new ArrayList<>() ; + for ( LuaObject item : items) + { + if ( ! (item instanceof LuaTuple ) ) + { + list.add(item.wrapToJava()); + } + } + return list; + } + + @Override + public Object wrapToJava() { + return isMap() ? wrapTodHashMap() : wrapToList(); } @Override diff --git a/java/org/artisanlogiciel/lua/LuaString.java b/java/org/artisanlogiciel/lua/LuaString.java index 3fda12c..54513e7 100644 --- a/java/org/artisanlogiciel/lua/LuaString.java +++ b/java/org/artisanlogiciel/lua/LuaString.java @@ -10,6 +10,11 @@ public class LuaString string = stringBuffer.toString(); } + @Override + public Object wrapToJava() { + return string; + } + @Override public String toString() { return '"' + string + '"' ; diff --git a/java/org/artisanlogiciel/lua/LuaTuple.java b/java/org/artisanlogiciel/lua/LuaTuple.java index c884826..32cf9d6 100644 --- a/java/org/artisanlogiciel/lua/LuaTuple.java +++ b/java/org/artisanlogiciel/lua/LuaTuple.java @@ -1,6 +1,7 @@ package org.artisanlogiciel.lua; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class LuaTuple @@ -19,6 +20,16 @@ public class LuaTuple return item; } + public String addInMap(HashMap map) + { + String key = items.get(0).toString(); + Object value = items.get(1); + + map.put(key,value); + + return key; + } + @Override public String toString() { StringBuffer buffer = new StringBuffer(); diff --git a/java/org/artisanlogiciel/lua/Parser.java b/java/org/artisanlogiciel/lua/Parser.java index d1a1f5c..b53a924 100644 --- a/java/org/artisanlogiciel/lua/Parser.java +++ b/java/org/artisanlogiciel/lua/Parser.java @@ -221,6 +221,8 @@ public class Parser { if ( result != null ) { System.out.println(result.toString()); + Object we = result.wrapToJava(); + System.out.println(we); } else {