private static FileFilter createFilter()

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;
    }