package org.jabref.logic.integrity; import java.util.Optional; import org.jabref.logic.l10n.Localization; public class BracketChecker implements ValueChecker { @Override public Optional<String> checkValue(String value) { // metaphor: integer-based stack (push + / pop -) int counter = 0; for (char a : value.trim().toCharArray()) { if (a == '{') { counter++; } else if (a == '}') { if (counter == 0) { return Optional.of(Localization.lang("unexpected closing curly bracket")); } else { counter--; } } } if (counter > 0) { return Optional.of(Localization.lang("unexpected opening curly bracket")); } return Optional.empty(); } }