package sk.sorien.pimpleplugin.pimple; import org.jetbrains.annotations.Nullable; /** * @author Stanislav Turza */ public class Signature { public String base = ""; public String parameter = ""; public Signature(@Nullable String expression) { set(expression); } public Signature() { } public void set(@Nullable String expression) { try { base = ""; parameter = ""; if (expression != null) { int len = expression.length(); int start = -1; int counter = 0; if (expression.charAt(len - 1) == ']') { for (int i = (len - 2); i >= 0; i--){ if ((expression.charAt(i) == '[') && (counter == 0)) { start = i; break; } if ((expression.charAt(i) == ']') ) { counter++; } if ((expression.charAt(i) == '[') ) { counter--; } } } if (start == -1) { base = expression; return; } base = expression.substring(0, start); parameter = expression.substring(start + 1, len - 1); } } catch (StringIndexOutOfBoundsException e) { throw new IllegalArgumentException(expression); } } public Boolean hasParameter() { return !parameter.isEmpty(); } public Boolean hasValidClassSignature() { return !(base.isEmpty() || base.matches("#C\\\\(array|int|integer|float|bool|boolean|string)")); } @Override public String toString() { return base + (this.hasParameter() ? "[" + parameter + "]" : ""); } }