57 lines
1.7 KiB
Java
57 lines
1.7 KiB
Java
package be.jeffcheasey88.peeratcode.parser.java.operations;
|
|
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
import be.jeffcheasey88.peeratcode.parser.java.CleanerPool;
|
|
import be.jeffcheasey88.peeratcode.parser.java.JavaElement;
|
|
import be.jeffcheasey88.peeratcode.parser.java.CleanerPool.Cleaner;
|
|
|
|
//ContainerOperation
|
|
public class IfOperation extends OperationContainer{
|
|
|
|
private static Pattern PATTERN = Pattern.compile("^(\\s*if\\s*(\\^GENERIC_PARENTHESIS\\d+)).*$");
|
|
|
|
private String condition; //replace by Operation
|
|
|
|
public IfOperation(){}
|
|
|
|
@Override
|
|
public int parse(String content, CleanerPool cleaner) throws Exception{
|
|
System.out.println("IF STATEMENT");
|
|
CleanerPool generic = new CleanerPool(
|
|
new Cleaner("GENERIC_PARENTHESIS",'(',')'),
|
|
new Cleaner("GENERIC_FUNCTION", '{','}'));
|
|
content = generic.clean(content);
|
|
System.out.println("after clean "+content);
|
|
|
|
Matcher matcher = PATTERN.matcher(content);
|
|
matcher.matches();
|
|
|
|
this.condition = generic.unzip(matcher.group(2), (s,p) -> s);
|
|
|
|
int index = generic.unzip(matcher.group(1), (s,p) -> s).length();
|
|
content = generic.unzip(content, (s,p) -> s).substring(index);
|
|
System.out.println("INSIDE "+content);
|
|
int bodysize;
|
|
if(content.startsWith("{")){
|
|
bodysize = content.indexOf('}')+1;
|
|
content = content.substring(1, bodysize-1);
|
|
parse(content, cleaner, generic);
|
|
}else{
|
|
bodysize = parseOne(content, cleaner, generic);
|
|
}
|
|
|
|
return index+bodysize;
|
|
}
|
|
|
|
@Override
|
|
public void show(int tab) {
|
|
String start = "";
|
|
for(int i = 0; i < tab; i++) start+="\t";
|
|
System.out.println(start+"if("+condition+"){");
|
|
for(JavaElement child : getChilds()) child.show(tab+1);
|
|
System.out.println(start+"}");
|
|
}
|
|
|
|
}
|