package diskCacheV111.admin ;
import com.google.common.base.CharMatcher;
import jline.console.completer.Completer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Simple completor for JLine that uses the dCache help output to
* suggest command completions.
*/
public class HelpCompleter implements Completer
{
final List<String> completions = new ArrayList<>();
public HelpCompleter(String help)
{
for (String line: help.split("\n")) {
completions.add(scan(line.trim()));
}
Collections.sort(completions);
}
protected String scan(String line)
{
int i = CharMatcher.anyOf("#[]<>|-").indexIn(line);
return (i == -1) ? line : line.substring(0, i);
}
@Override
public int complete(String buffer, int cursor, List<CharSequence> candidates)
{
if (cursor < buffer.length()) {
return -1;
}
String s = buffer.replaceAll("\\s+", " ");
int i = Collections.binarySearch(completions, s);
if (i < 0) {
i = -i - 1;
}
while (i < completions.size() && completions.get(i).startsWith(s)) {
candidates.add(completions.get(i));
i++;
}
return 0;
}
}