package org.jabref.logic.layout.format;
import java.util.Objects;
import org.jabref.logic.journals.JournalAbbreviationLoader;
import org.jabref.logic.journals.JournalAbbreviationPreferences;
import org.jabref.logic.layout.LayoutFormatter;
/**
* JournalAbbreviator formats the given text in an abbreviated form
* according to the journal abbreviation lists.
*
* The given input text is abbreviated according to the journal abbreviation lists.
* If no abbreviation for input is found (e.g. not in list or already abbreviated), the input will be returned unmodified.
*
* Usage:
* \format[JournalAbbreviator]{\journal}
* Example result:
* "Phys. Rev. Lett." instead of "Physical Review Letters"
*
* @author Meigel
*
*/
public class JournalAbbreviator implements LayoutFormatter {
private final JournalAbbreviationLoader repostioryLoader;
private final JournalAbbreviationPreferences journalAbbreviationPreferences;
public JournalAbbreviator(JournalAbbreviationLoader repostioryLoader,
JournalAbbreviationPreferences journalAbbreviationPreferences) {
this.repostioryLoader = Objects.requireNonNull(repostioryLoader);
this.journalAbbreviationPreferences = Objects.requireNonNull(journalAbbreviationPreferences);
}
@Override
public String format(String fieldText) {
return repostioryLoader.getRepository(journalAbbreviationPreferences)
.getIsoAbbreviation(fieldText).orElse(fieldText);
}
}