Multiple Variable Definition
This commit is contained in:
parent
4b1b83930e
commit
784a51e75c
3 changed files with 104 additions and 44 deletions
|
@ -6,6 +6,8 @@ import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import be.jeffcheasey88.peeratcode.parser.java.Variable.MultipleDeclaratedVariable;
|
||||||
|
|
||||||
public class Class{
|
public class Class{
|
||||||
|
|
||||||
private static Pattern PATTERN = Pattern.compile("^(\\s*([^\\{]*)\\{(.*)\\})\\s*$");
|
private static Pattern PATTERN = Pattern.compile("^(\\s*([^\\{]*)\\{(.*)\\})\\s*$");
|
||||||
|
@ -40,16 +42,30 @@ public class Class{
|
||||||
int braces = indexOf(content,"\\{");
|
int braces = indexOf(content,"\\{");
|
||||||
int equals = indexOf(content,"=");
|
int equals = indexOf(content,"=");
|
||||||
if((quotes < braces && quotes < equals) || (equals < braces)){
|
if((quotes < braces && quotes < equals) || (equals < braces)){
|
||||||
boolean quote = false;
|
Variable variable = new Variable();
|
||||||
Variable variable = null;
|
int index = variable.parse(content, cleaner);
|
||||||
do {
|
content = content.substring(index);
|
||||||
variable = (variable == null) ? new Variable() : new Variable(variable.getModifier(), variable.getType());
|
boolean quote = content.startsWith(",");
|
||||||
int index = variable.parse(content, cleaner);
|
if(quote){
|
||||||
|
content = content.substring(1);
|
||||||
|
|
||||||
|
MultipleDeclaratedVariable multiple = new MultipleDeclaratedVariable(variable.getModifier(), variable.getType());
|
||||||
|
multiple.addVariable(variable.getName(), variable.getValue());
|
||||||
|
while(quote){
|
||||||
|
variable = new Variable(variable.getModifier(), variable.getType());
|
||||||
|
index = variable.parse(content, cleaner);
|
||||||
|
content = content.substring(index);
|
||||||
|
quote = content.startsWith(",");
|
||||||
|
if(quote) content = content.substring(1);
|
||||||
|
|
||||||
|
multiple.addVariable(variable.getName(), variable.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
this.vars.add(multiple);
|
||||||
|
}else{
|
||||||
this.vars.add(variable);
|
this.vars.add(variable);
|
||||||
content = content.substring(index);
|
}
|
||||||
quote = content.startsWith(",");
|
|
||||||
if(quote) content = content.substring(1);
|
|
||||||
}while(quote);
|
|
||||||
content = content.substring(1);
|
content = content.substring(1);
|
||||||
}else{
|
}else{
|
||||||
// System.out.println("Function "+content);
|
// System.out.println("Function "+content);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package be.jeffcheasey88.peeratcode.parser.java;
|
package be.jeffcheasey88.peeratcode.parser.java;
|
||||||
|
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
@ -145,4 +146,34 @@ public class Variable {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class MultipleDeclaratedVariable extends Variable{
|
||||||
|
|
||||||
|
private List<String> names;
|
||||||
|
private List<Variable> values;
|
||||||
|
|
||||||
|
public MultipleDeclaratedVariable(int modifier, String type){
|
||||||
|
super(modifier, type);
|
||||||
|
this.names = new ArrayList<>();
|
||||||
|
this.values = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addVariable(String name, Variable value){
|
||||||
|
this.names.add(name);
|
||||||
|
this.values.add(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void show(int tab){
|
||||||
|
String start = "";
|
||||||
|
for(int i = 0; i < tab; i++) start+="\t";
|
||||||
|
String vars = "";
|
||||||
|
for(int i = 0; i < this.names.size(); i++){
|
||||||
|
Variable value = this.values.get(i);
|
||||||
|
vars+=","+this.names.get(i)+((value == null) ? "" : " = "+value);
|
||||||
|
}
|
||||||
|
vars = vars.substring(1);
|
||||||
|
System.out.println(start+Modifier.toString(getModifier())+" "+getType()+" "+vars+";");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package be.jeffcheasey88.peeratcode.parser.java;
|
package be.jeffcheasey88.peeratcode.parser.java;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.TestInstance;
|
import org.junit.jupiter.api.TestInstance;
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
|
import be.jeffcheasey88.peeratcode.parser.java.Variable.MultipleDeclaratedVariable;
|
||||||
import be.jeffcheasey88.peeratcode.parser.java.Variable.Value;
|
import be.jeffcheasey88.peeratcode.parser.java.Variable.Value;
|
||||||
|
|
||||||
@TestInstance(Lifecycle.PER_CLASS)
|
@TestInstance(Lifecycle.PER_CLASS)
|
||||||
|
@ -113,19 +115,23 @@ class VariableTest{
|
||||||
clazz.parse(cleaner.clean("public class Test{ int i ,j,k,l=1; } "), cleaner);
|
clazz.parse(cleaner.clean("public class Test{ int i ,j,k,l=1; } "), cleaner);
|
||||||
|
|
||||||
List<Variable> vars = clazz.getVariables();
|
List<Variable> vars = clazz.getVariables();
|
||||||
assertEquals(4, vars.size());
|
assertEquals(1, vars.size());
|
||||||
for(int i = 0; i < 3; i++){
|
|
||||||
Variable v = vars.get(i);
|
Variable v = vars.get(0);
|
||||||
assertEquals(0, v.getModifier());
|
|
||||||
assertEquals("int", v.getType());
|
|
||||||
assertEquals((char)('i'+i), v.getName().charAt(0));
|
|
||||||
assertNull(v.getValue());
|
|
||||||
}
|
|
||||||
Variable v = vars.get(3);
|
|
||||||
assertEquals(0, v.getModifier());
|
assertEquals(0, v.getModifier());
|
||||||
assertEquals("int", v.getType());
|
assertEquals("int", v.getType());
|
||||||
assertEquals('l', v.getName().charAt(0));
|
// for(int i = 0; i < 3; i++){
|
||||||
assertEquals("1", ((Value)v.getValue()).value());
|
// Variable v = vars.get(i);
|
||||||
|
// assertEquals(0, v.getModifier());
|
||||||
|
// assertEquals("int", v.getType());
|
||||||
|
// assertEquals((char)('i'+i), v.getName().charAt(0));
|
||||||
|
// assertNull(v.getValue());
|
||||||
|
// }
|
||||||
|
// Variable v = vars.get(3);
|
||||||
|
// assertEquals(0, v.getModifier());
|
||||||
|
// assertEquals("int", v.getType());
|
||||||
|
// assertEquals('l', v.getName().charAt(0));
|
||||||
|
// assertEquals("1", ((Value)v.getValue()).value());
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
fail(e);
|
fail(e);
|
||||||
}
|
}
|
||||||
|
@ -138,13 +144,16 @@ class VariableTest{
|
||||||
clazz.parse(cleaner.clean("public class Test{ int i ,j,k; int l=i=k=l=4; } "), new CleanerPool());
|
clazz.parse(cleaner.clean("public class Test{ int i ,j,k; int l=i=k=l=4; } "), new CleanerPool());
|
||||||
|
|
||||||
List<Variable> vars = clazz.getVariables();
|
List<Variable> vars = clazz.getVariables();
|
||||||
assertEquals(4, vars.size());
|
assertEquals(2, vars.size());
|
||||||
for(int i = 0; i < 4; i++){
|
Variable v = vars.get(0);
|
||||||
Variable v = vars.get(i);
|
assertEquals(0, v.getModifier());
|
||||||
assertEquals(0, v.getModifier());
|
assertEquals("int", v.getType());
|
||||||
assertEquals("int", v.getType());
|
// for(int i = 0; i < 4; i++){
|
||||||
assertEquals((char)('i'+i), v.getName().charAt(0));
|
// Variable v = vars.get(i);
|
||||||
}
|
// assertEquals(0, v.getModifier());
|
||||||
|
// assertEquals("int", v.getType());
|
||||||
|
// assertEquals((char)('i'+i), v.getName().charAt(0));
|
||||||
|
// }
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
fail(e);
|
fail(e);
|
||||||
}
|
}
|
||||||
|
@ -172,14 +181,17 @@ class VariableTest{
|
||||||
clazz.parse(cleaner.clean("public class Test{ int i ,j,k,l; } "), cleaner);
|
clazz.parse(cleaner.clean("public class Test{ int i ,j,k,l; } "), cleaner);
|
||||||
|
|
||||||
List<Variable> vars = clazz.getVariables();
|
List<Variable> vars = clazz.getVariables();
|
||||||
assertEquals(vars.size(), 4);
|
assertEquals(1, vars.size());
|
||||||
for(int i = 0; i < 3; i++){
|
Variable v = vars.get(0);
|
||||||
Variable v = vars.get(i);
|
assertEquals(0, v.getModifier());
|
||||||
assertEquals(0, v.getModifier());
|
assertEquals("int", v.getType());
|
||||||
assertEquals("int", v.getType());
|
// for(int i = 0; i < 3; i++){
|
||||||
assertEquals((char)('i'+i), v.getName().charAt(0));
|
// Variable v = vars.get(i);
|
||||||
assertNull(v.getValue());
|
// assertEquals(0, v.getModifier());
|
||||||
}
|
// assertEquals("int", v.getType());
|
||||||
|
// assertEquals((char)('i'+i), v.getName().charAt(0));
|
||||||
|
// assertNull(v.getValue());
|
||||||
|
// }
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
fail(e);
|
fail(e);
|
||||||
}
|
}
|
||||||
|
@ -257,19 +269,20 @@ class VariableTest{
|
||||||
clazz.parse(cleaner.clean("public class Test{ private java.util.function.Function<Integer, Integer> j = ((i) -> {return 4;}), k = ((i) -> 4); } "), cleaner);
|
clazz.parse(cleaner.clean("public class Test{ private java.util.function.Function<Integer, Integer> j = ((i) -> {return 4;}), k = ((i) -> 4); } "), cleaner);
|
||||||
|
|
||||||
List<Variable> vars = clazz.getVariables();
|
List<Variable> vars = clazz.getVariables();
|
||||||
assertEquals(2, vars.size());
|
assertEquals(1, vars.size());
|
||||||
Variable variable;
|
Variable variable;
|
||||||
variable = vars.get(0);
|
variable = vars.get(0);
|
||||||
|
assertTrue(variable instanceof MultipleDeclaratedVariable);
|
||||||
assertEquals(JavaParser.getModifier("private"), variable.getModifier());
|
assertEquals(JavaParser.getModifier("private"), variable.getModifier());
|
||||||
assertEquals("java.util.function.Function<Integer,Integer>", variable.getType());
|
assertEquals("java.util.function.Function<Integer,Integer>", variable.getType());
|
||||||
assertEquals("j", variable.getName());
|
// assertEquals("j", variable.getName());
|
||||||
assertEquals("((i) -> {return 4;})", ((Value)variable.getValue()).value());
|
// assertEquals("((i) -> {return 4;})", ((Value)variable.getValue()).value());
|
||||||
|
//
|
||||||
variable = vars.get(1);
|
// variable = vars.get(1);
|
||||||
assertEquals(JavaParser.getModifier("private"), variable.getModifier());
|
// assertEquals(JavaParser.getModifier("private"), variable.getModifier());
|
||||||
assertEquals("java.util.function.Function<Integer,Integer>", variable.getType());
|
// assertEquals("java.util.function.Function<Integer,Integer>", variable.getType());
|
||||||
assertEquals("k", variable.getName());
|
// assertEquals("k", variable.getName());
|
||||||
assertEquals("((i) -> 4)", ((Value)variable.getValue()).value());
|
// assertEquals("((i) -> 4)", ((Value)variable.getValue()).value());
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
fail(e);
|
fail(e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue