use of biblemulticonverter.format.paratext.ParatextCharacterContent.KeepIf in project BibleMultiConverter by schierlm.
the class AbstractParatextFormat method filterContents.
private void filterContents(List<ParatextCharacterContentPart> parts, EnumSet<KeepIf> partsToKeep) {
for (int i = 0; i < parts.size(); i++) {
ParatextCharacterContentPart part = parts.get(i);
if (part instanceof AutoClosingFormatting) {
KeepIf keepCondition = ((AutoClosingFormatting) part).getKind().getKeepIf();
if (keepCondition != null && !partsToKeep.contains(keepCondition)) {
parts.remove(i);
i--;
continue;
}
}
if (part instanceof ParatextCharacterContentContainer) {
filterContents(((ParatextCharacterContentContainer) part).getContent(), partsToKeep);
}
}
}
use of biblemulticonverter.format.paratext.ParatextCharacterContent.KeepIf in project BibleMultiConverter by schierlm.
the class AbstractParatextFormat method doImportBooks.
public final List<ParatextBook> doImportBooks(File inputFile) throws Exception {
List<ParatextBook> result = doImportAllBooks(inputFile);
String keepParts = System.getProperty("biblemulticonverter.paratext.keepparts", null);
if (keepParts != null) {
EnumSet<KeepIf> partsToKeep = EnumSet.noneOf(KeepIf.class);
for (String flag : keepParts.split("[^A-Za-z]+")) {
partsToKeep.add(KeepIf.valueOf(flag.toUpperCase()));
}
for (int i = 0; i < result.size(); i++) {
ParatextBook book = result.get(i);
boolean keep = true;
if (book.getId().getId().isDeuterocanonical()) {
keep = partsToKeep.contains(KeepIf.DC);
} else if (book.getId().getId().isNT()) {
keep = partsToKeep.contains(KeepIf.NT);
} else if (book.getId().getId().getZefID() > 0) {
keep = partsToKeep.contains(KeepIf.OT);
}
if (!keep) {
result.remove(i);
i--;
continue;
}
for (int j = 0; j < book.getContent().size(); j++) {
ParatextBookContentPart part = book.getContent().get(i);
if (part instanceof ParatextCharacterContent) {
filterContents(((ParatextCharacterContent) part).getContent(), partsToKeep);
}
}
}
}
return result;
}
Aggregations