package be.jeffcheasey88.peeratcode.parser.java.operations; import java.util.List; import java.util.function.BiFunction; import java.util.regex.Matcher; import java.util.regex.Pattern; import be.jeffcheasey88.peeratcode.parser.java.ArrayBuffer; import be.jeffcheasey88.peeratcode.parser.java.CleanerPool; import be.jeffcheasey88.peeratcode.parser.java.JavaElement; public class ThrowOperation extends JavaElement{ private static Pattern PATTERN = Pattern.compile("^(\\s*throw\\s+([^;]+);)"); private String toChange; public ThrowOperation(){} @Override public int parse(String content, CleanerPool global, CleanerPool local) throws Exception { Matcher matcher = PATTERN.matcher(content); matcher.lookingAt(); //To update for native obj this.toChange = matcher.group(2); return matcher.group(1).length(); } @Override public void build(ArrayBuffer buffer, int tab) throws Exception{ super.build(buffer, tab); buffer.append((s) -> s+="throw "+toChange+";"); buffer.add(""); } @Override public E find(java.util.function.Function search, java.util.function.Function, Boolean> deep, List trace){ return search.apply(this) ? (E)this : null; } @Override public E find(BiFunction, Boolean> search, List trace){ trace.add(this); return search.apply(this, trace) || trace.remove(trace.size()-1) == null ? (E)this : null; } }