From 4befbd71471aecedf2d4694a1239b4079b86b0d1 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Sun, 30 Apr 2023 21:53:09 +0200 Subject: [PATCH] CleanerPool > Cutter > 2 methods --- .../peeratcode/parser/java/CleanerPool.java | 16 +++++--- .../peeratcode/parser/java/CleanerTest.java | 40 +++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 test/be/jeffcheasey88/peeratcode/parser/java/CleanerTest.java 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); + } +}