package org.rubypeople.rdt.internal.core.search;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import org.rubypeople.rdt.internal.core.util.Util;
public class MethodPatternParser {
private String selector;
private String typeName;
List<String> params = new ArrayList<String>();
public char[] getSelector() {
if (selector == null) return null;
return selector.toCharArray();
}
public void parse(String string) {
if (string == null) return;
int index = string.indexOf(".");
if (index == -1) {
index = string.indexOf("#");
}
if (index != -1) {
typeName = string.substring(0, index);
selector = string.substring(index + 1);
} else {
selector = string;
typeName = null;
}
index = selector.indexOf('(');
if (index != -1) {
String raw = selector.substring(index + 1, selector.length() - 1);
selector = selector.substring(0, index);
StringTokenizer tokenizer = new StringTokenizer(raw, " ,");
while (tokenizer.hasMoreTokens()) {
String param = tokenizer.nextToken();
params.add(param);
}
}
}
public char[] getTypeSimpleName() {
if (typeName == null) return null;
String name = Util.getSimpleName(typeName);
if (name == null) return null;
return name.toCharArray();
}
public char[] getQualifiedTypeName() {
if (typeName == null) return null;
return typeName.toCharArray();
}
public char[][] getParameterNames() {
if (params.isEmpty()) return null;
char[][] parameters = new char[params.size()][];
int i = 0;
for (String param : params) {
parameters[i++] = param.toCharArray();
}
return parameters;
}
}