From 8941eac25cc1689f700d3e3585df965f044e582a Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Mon, 8 May 2023 09:39:52 +0200 Subject: [PATCH] Fix multiple equals & Take Case when value has spaces --- .../peeratcode/parser/java/CleanerPool.java | 20 ++++++++++++++----- .../peeratcode/parser/java/JavaParser.java | 4 ++-- .../peeratcode/parser/java/Variable.java | 9 +++++---- .../peeratcode/parser/java/CleanerTest.java | 8 ++++++++ .../peeratcode/parser/java/VariableTest.java | 15 ++++++++++++++ 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java index e7f59b4..d321aa3 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java @@ -74,7 +74,12 @@ public class CleanerPool{ for(int i = 0; i < value.length(); i++){ char c = value.charAt(i); if(c == open){ - i+=cutOpenable(value.substring(i+1), constants, pattern, open, close); + int cut = cutOpenable(value.substring(i+1), constants, pattern, open, close); + if(cut < 0){ + builder.append(c); + continue; + } + i+=cut; builder.append(pattern+(constants.size()-1)); }else{ builder.append(c); @@ -89,17 +94,22 @@ public class CleanerPool{ for(;i < value.length(); i++){ char c = value.charAt(i); if(c == close){ - break; + constants.add(builder.toString()); + return i+1; }else if(c == open){ - i+=cutOpenable(value.substring(i+1), constants, pattern, open, close); + int cut = cutOpenable(value.substring(i+1), constants, pattern, open, close); + if(cut < 0){ + builder.append(c); + continue; + } + i+=cut; builder.append(pattern+(constants.size()-1)); }else{ builder.append(c); } } - constants.add(builder.toString()); - return i+1; + return -1; } } diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index f70901e..5df2042 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -54,7 +54,7 @@ public class JavaParser { } this.clazz = new Class(); - index = this.clazz.parse(content, new CleanerPool()); + index = this.clazz.parse(content, new CleanerPool(new Cleaner("CONSTANT_STRING",'"','"'))); content = content.substring(index); } @@ -95,5 +95,5 @@ public class JavaParser { } return 0; } - + } diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java index 4089416..047d910 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/Variable.java @@ -63,8 +63,9 @@ public class Variable { System.out.println("ah"); values.next(); if(!values.hasNext()) return; - this.value = new Value(values.next()); - System.out.println("VALUE IS "+value); + String spacesValue = values.next(); + while(values.hasNext()) spacesValue+=" "+values.next(); + this.value = new Value(spacesValue); } private Iterator onlyDefine(String content, CleanerPool cleaner){ @@ -91,8 +92,8 @@ public class Variable { unzip(content, (s) -> s.replaceAll("\\s+", "")). replaceAll(">(?[^>\\d,;])", "> ${varname}"). replaceAll("](?[^\\[\\d,;])", "] ${varname}"). - replaceAll("(?[^\\s=])=","${varname} ="). - replaceAll("=(?[^\\s=])"," = ${varname}"); + replaceAll("(?[^=\\s])=","${varname} ="). + replaceAll("=(?[^=\\s])","= ${varname}"); } private int indexOf(String value, String target){ diff --git a/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java b/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java index 5680054..9c00253 100644 --- a/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java +++ b/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java @@ -3,6 +3,7 @@ package be.jeffcheasey88.peeratcode.parser.java; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.Arrays; +import java.util.regex.Pattern; import org.junit.jupiter.api.Test; @@ -16,4 +17,11 @@ public class CleanerTest { String result = cleaner.clean("Test0< List< Map< Test1, List< Test2 >, Test3>> > "); assertEquals("Test0$TEST3 ", result); } + + @Test + void sameOpenClose(){ + CleanerPool cleaner = new CleanerPool(new Cleaner("STRINGS",'"','"')); + String result = cleaner.clean("Pattern.compile(\"^\\s*(import\\s+([^;]*);).*$\");"); + assertEquals("Pattern.compile($STRINGS0);", result); + } } diff --git a/test/be/jeffcheasey88/peeratcode/parser/java/VariableTest.java b/test/be/jeffcheasey88/peeratcode/parser/java/VariableTest.java index cd35205..b45612d 100644 --- a/test/be/jeffcheasey88/peeratcode/parser/java/VariableTest.java +++ b/test/be/jeffcheasey88/peeratcode/parser/java/VariableTest.java @@ -187,4 +187,19 @@ class VariableTest{ } } + @Test + void case10(){ + try { + Variable variable = new Variable(); + variable.parse(cleaner.clean(" boolean i = j << 3==0 ; "), cleaner); + + assertEquals(0, variable.getModifier()); + assertEquals("boolean", variable.getType()); + assertEquals("i", variable.getName()); + assertEquals("j << 3 == 0", ((Value)variable.getValue()).value()); + }catch(Exception e){ + fail(e); + } + } + }