public BundleWalker(Callback cb, String[] patterns) { if (patterns != null) { this.patterns = new FileNamePattern[patterns.length]; for (int i = 0; i < patterns.length; i++) { this.patterns[i] = new FileNamePattern(patterns[i]); } } callback = cb; }
return false; if (containsAt(text, offset, pattern)) { return match(text, k, part + 1, false); k = indexOf(text, pattern, k); if (k == -1) { return false; if (match(text, k + pattern.length, part + 1, false)) { return true; // matched
public FileNamePattern(String pattern) { initialize(pattern); }
public static File[] findFiles(File root, String pattern, boolean recurse) { List<File> result = new ArrayList<>(); if (pattern == null) { if (recurse) { collectFiles(root, result); } else { return root.listFiles(); } } else { FileNamePattern pat = new FileNamePattern(pattern); if (recurse) { collectFiles(root, pat, result); } else { File[] files = root.listFiles(); for (File file : files) { if (pat.match(file.getName())) { result.add(file); } } } } return result.toArray(new File[result.size()]); }
protected boolean acceptFile(String fileName, FileNamePattern[] patterns) { int i = 0; for (; i < patterns.length; i++) { if (patterns[i].match(fileName)) { break; } } return i < patterns.length; }
len = buf.length(); if (len > 0) { result.add(toCharArray(buf, len)); buf.setLength(0); len = buf.length(); if (len > 0) { result.add(toCharArray(buf, len));
public boolean match(String text) { if (parts == null || parts.length == 0) { if (text.length() == 0) { // handle "" empty patterns return true; } return wstart || wend; } return match(text.toCharArray(), 0, 0, !wstart); }
public static void collectFiles(File root, FileNamePattern pattern, List<File> result) { File[] files = root.listFiles(); for (File file : files) { if (pattern.match(file.getName())) { result.add(file); if (file.isDirectory()) { collectFiles(file, pattern, result); } } } }
public FilePathPattern(Path path) { String[] segments = path.segments(); patterns = new FileNamePattern[segments.length]; for (int i = 0; i < segments.length; i++) { String segment = segments[i]; if (segment.equals("**")) { patterns[i] = null; // match any segments } else { patterns[i] = new FileNamePattern(segment); } } }