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 HowPublishedChecker implements ValueChecker { private static final Predicate<String> FIRST_LETTER_CAPITALIZED = Pattern.compile("^[^a-z]").asPredicate(); private final BibDatabaseContext databaseContext; public HowPublishedChecker(BibDatabaseContext databaseContext) { this.databaseContext = Objects.requireNonNull(databaseContext); } /** * Official BibTeX specification: * HowPublished: How something strange has been published. The first word should be capitalized. * biblatex package documentation (Section 4.9.1): * The biblatex package will automatically capitalize the first word when required at the beginning of a sentence. */ @Override public Optional<String> checkValue(String value) { //BibTeX if (!databaseContext.isBiblatexMode() && !FIRST_LETTER_CAPITALIZED.test(value.trim())) { return Optional.of(Localization.lang("should have the first letter capitalized")); } return Optional.empty(); } }