diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java index 36b50f0..57100cb 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/CleanerPool.java @@ -76,18 +76,24 @@ public class CleanerPool { String execute(String value, List constants, String pattern); - default String cutOpenable(String value, List constants, String pattern, char open, char close){ + default int cutOpenable(String value, List constants, String pattern, char open, char close){ StringBuilder builder = new StringBuilder(); + System.out.println("cutOpenable "+value); - for(char c : value.toCharArray()){ + for(int i = 0; i < value.length(); i++){ + char c = value.charAt(i); if(c == open){ - + i+=cutOpenable(value.substring(i+1), constants, pattern, '<', '>'); + builder.append(pattern+(constants.size()-1)); }else if(c == close){ - + break; + }else{ + builder.append(c); } } - return builder.toString(); + constants.add(builder.toString()); + return builder.length()+1; } } diff --git a/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java b/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java new file mode 100644 index 0000000..70dcf6b --- /dev/null +++ b/test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java @@ -0,0 +1,40 @@ +package be.jeffcheasey88.peeratcode.parser.java; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import be.jeffcheasey88.peeratcode.parser.java.CleanerPool.Cutter; + +public class CleanerTest { + + @Test + void cutter(){ + Cutter generic = new Cutter(){ + @Override + public String execute(String value, List constants, String pattern){ + String result = ""; + for(int i = 0; i < value.length(); i++){ + char c = value.charAt(i); + if(c == '<'){ + i+=cutOpenable(value.substring(i+1), constants, pattern, '<', '>'); + result+=pattern+(constants.size()-1); + }else{ + result+=c; + } + } + return result; + } + }; + + List list = new ArrayList<>(); + String result = generic.execute("test>", list, "$TEST"); + assertEquals(list.size(), 2); + assertEquals(list.get(0), "Lol"); + assertEquals(list.get(1), "Test$TEST0"); + assertEquals("test$TEST1", result); + } +}