mirror of
https://github.com/Maschell/JNUSLib.git
synced 2024-11-25 17:36:55 +01:00
[NUSTitle] Improve getFSTEntriesByRegEx
This commit is contained in:
parent
89fbc830f1
commit
9bc418357e
@ -100,24 +100,40 @@ public class NUSTitle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<FSTEntry> getFSTEntriesByRegEx(String regEx) {
|
public List<FSTEntry> getFSTEntriesByRegEx(String regEx) {
|
||||||
List<FSTEntry> files = getAllFSTEntriesFlat();
|
return getFSTEntriesByRegEx(regEx, FST.getRoot());
|
||||||
Pattern p = Pattern.compile(regEx);
|
|
||||||
|
|
||||||
List<FSTEntry> result = new ArrayList<>();
|
|
||||||
|
|
||||||
for (FSTEntry f : files) {
|
|
||||||
String match = f.getFullPath().replace(File.separator, "/");
|
|
||||||
Matcher m = p.matcher(match);
|
|
||||||
if (m.matches()) {
|
|
||||||
result.add(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FSTEntry> getFSTEntriesByRegEx(String regEx, FSTEntry entry) {
|
||||||
|
return getFSTEntriesByRegEx(regEx, entry, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FSTEntry> getFSTEntriesByRegEx(String regEx, boolean onlyInPackage) {
|
||||||
|
return getFSTEntriesByRegEx(regEx, FST.getRoot(), onlyInPackage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FSTEntry> getFSTEntriesByRegEx(String regEx, FSTEntry entry, boolean allowNotInPackage) {
|
||||||
|
Pattern p = Pattern.compile(regEx);
|
||||||
|
return getFSTEntriesByRegExStream(p, entry, allowNotInPackage).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Stream<FSTEntry> getFSTEntriesByRegExStream(Pattern p, FSTEntry entry, boolean allowNotInPackage) {
|
||||||
|
return entry.getChildren().stream()//
|
||||||
|
.filter(e -> allowNotInPackage || !e.isNotInPackage()) //
|
||||||
|
.flatMap(e -> {
|
||||||
|
if (!e.isDir()) {
|
||||||
|
if (p.matcher(entry.getFullPath().replace("/", File.separator)).matches()) {
|
||||||
|
return Stream.of(entry);
|
||||||
|
} else {
|
||||||
|
return Stream.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getFSTEntriesByRegExStream(p, e, allowNotInPackage);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<FSTEntry> getFileEntryDir(String string) {
|
public Optional<FSTEntry> getFileEntryDir(String string) {
|
||||||
return getFileEntryDir(string.replace("/", File.separator), FST.getRoot());
|
return getFileEntryDir(string.replace("/", File.separator), FST.getRoot());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<FSTEntry> getFileEntryDir(String string, FSTEntry curEntry) {
|
public Optional<FSTEntry> getFileEntryDir(String string, FSTEntry curEntry) {
|
||||||
for (val curChild : curEntry.getDirChildren()) {
|
for (val curChild : curEntry.getDirChildren()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user