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; public class SynchronizedOperation extends OperationContainer{ private static Pattern PATTERN = Pattern.compile("^(\\s*synchronized\\s*)(\\^GENERIC_PARENTHESIS\\d+)(\\s*).*$"); private static Pattern PATTERN_CLEANER = Pattern.compile("^(\\^GENERIC_FUNCTION\\d+).*$"); private String include; @Override public int parse(String content, CleanerPool global, CleanerPool local) throws Exception{ Matcher matcher = PATTERN.matcher(content); matcher.matches(); this.include = local.unzip(matcher.group(2), (s,p) -> s); int index = matcher.group(1).length()+matcher.group(2).length()+matcher.group(3).length(); content = content.substring(index); matcher = PATTERN_CLEANER.matcher(content); matcher.matches(); content = matcher.group(1); index += content.length(); content = local.unzipOne(content, (s,p) -> s); content = content.substring(1, content.length()-1); content = local.clean(content); super.parse(content, global, local); return index; } @Override public void show(int tab){ String start = ""; for(int i = 0; i < tab; i++) start+="\t"; System.out.println(start+"synchronized"+this.include+"{"); for(JavaElement child : getChilds()) child.show(tab+1); System.out.println(start+"}"); } }