in src/org/jetbrains/ether/DirectoryScanner.java [104:167]
private static FileFilter createFilter(final Collection<String> excludes) {
if (excludes == null) {
return myTrueFilter;
}
StringBuilder buf = new StringBuilder();
for (String exclude : excludes) {
StringBuilder alternative = new StringBuilder();
if (exclude != null) {
for (int i = 0; i < exclude.length(); i++) {
final char c = exclude.charAt(i);
switch (c) {
case '.':
case '\\':
case '*':
case '^':
case '$':
case '[':
case '(':
case '|':
alternative.append("\\");
alternative.append(c);
break;
case '?':
alternative.append(".");
break;
default:
alternative.append(c);
}
}
}
if (alternative.length() > 0) {
alternative.append(".*");
if (buf.length() > 0)
buf.append("|");
buf.append("(");
buf.append(alternative);
buf.append(')');
}
}
if (buf.length() > 0) {
final Pattern patt = Pattern.compile(buf.toString());
return new FileFilter() {
public boolean accept(File f) {
final Matcher m = patt.matcher(f.getAbsolutePath());
final boolean ok = !m.matches();
return ok && f.isFile();
}
};
}
return myTrueFilter;
}