CleanerPool > Cutter > 2 methods

This commit is contained in:
jeffcheasey88 2023-04-30 21:53:09 +02:00
parent 01f9aef845
commit 4befbd7147
2 changed files with 51 additions and 5 deletions

View file

@ -76,18 +76,24 @@ public class CleanerPool {
String execute(String value, List<String> constants, String pattern);
default String cutOpenable(String value, List<String> constants, String pattern, char open, char close){
default int cutOpenable(String value, List<String> 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;
}
}

View file

@ -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<String> 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<String> list = new ArrayList<>();
String result = generic.execute("test<Test<Lol>>", list, "$TEST");
assertEquals(list.size(), 2);
assertEquals(list.get(0), "Lol");
assertEquals(list.get(1), "Test$TEST0");
assertEquals("test$TEST1", result);
}
}