package org.jabref.logic.integrity;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.database.BibDatabaseContext;
public class NoteChecker implements ValueChecker {
private static final Predicate<String> FIRST_LETTER_CAPITALIZED = Pattern.compile("^[^a-z]").asPredicate();
private final BibDatabaseContext bibDatabaseContextEdition;
public NoteChecker(BibDatabaseContext bibDatabaseContext) {
this.bibDatabaseContextEdition = Objects.requireNonNull(bibDatabaseContext);
}
/**
* biblatex package documentation (Section 4.9.1):
* The biblatex package will automatically capitalize the first word when required at the beginning of a sentence.
* Official BibTeX specification:
* note: Any additional information that can help the reader. The first word should be capitalized.
*/
@Override
public Optional<String> checkValue(String value) {
//BibTeX
if (!bibDatabaseContextEdition.isBiblatexMode() && !FIRST_LETTER_CAPITALIZED.test(value.trim())) {
return Optional.of(Localization.lang("should have the first letter capitalized"));
}
return Optional.empty();
}
}