Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import org.jabref.logic.bibtex.comparator.ComparisonResult;
import org.jabref.model.entry.types.StandardEntryType;

/// If the left entry type is misc then prefer the the right value
// If the left entry type is misc then prefer the right value

public class EntryTypePlausibilityComparator implements FieldValuePlausibilityComparator {

// Only the factory may instantiate this
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package org.jabref.logic.bibtex.comparator.plausibility;

import java.util.Optional;

import org.jabref.logic.bibtex.comparator.ComparisonResult;
import org.jabref.model.entry.Month;

import org.jspecify.annotations.NullMarked;

@NullMarked
public class MonthPlausibilityComparator implements FieldValuePlausibilityComparator {

@Override
public ComparisonResult compare(String left, String right) {
Optional<Month> leftM = Month.parse(left);
Optional<Month> rightM = Month.parse(right);

if (leftM.isPresent() && rightM.isEmpty()) {
return ComparisonResult.LEFT_BETTER;
}
if (rightM.isPresent() && leftM.isEmpty()) {
return ComparisonResult.RIGHT_BETTER;
}
if (leftM.isEmpty() && rightM.isEmpty()) {
return ComparisonResult.UNDETERMINED;
}
if (!leftM.equals(rightM)) {
return ComparisonResult.UNDETERMINED;
}

Month leftMonth = leftM.get();
Month rightMonth = rightM.get();

boolean leftIsJabRef = left.equals(leftMonth.getJabRefFormat());
boolean rightIsJabRef = right.equals(rightMonth.getJabRefFormat());
if (leftIsJabRef && !rightIsJabRef) {
return ComparisonResult.LEFT_BETTER;
}
if (rightIsJabRef && !leftIsJabRef) {
return ComparisonResult.RIGHT_BETTER;
}

boolean leftIsShort = left.equalsIgnoreCase(leftMonth.getShortName());
boolean rightIsShort = right.equalsIgnoreCase(rightMonth.getShortName());
if (leftIsShort && !rightIsShort) {
return ComparisonResult.LEFT_BETTER;
}
if (rightIsShort && !leftIsShort) {
return ComparisonResult.RIGHT_BETTER;
}

boolean leftIsSimpleNum;
try {
leftIsSimpleNum = Integer.parseInt(left) == leftM.get().getNumber();
} catch (NumberFormatException e) {
leftIsSimpleNum = false;
}
boolean rightIsSimpleNum;
try {
rightIsSimpleNum = Integer.parseInt(right) == rightM.get().getNumber();
} catch (NumberFormatException e) {
rightIsSimpleNum = false;
}
if (leftIsSimpleNum && !rightIsSimpleNum) {
return ComparisonResult.LEFT_BETTER;
}
if (rightIsSimpleNum && !leftIsSimpleNum) {
return ComparisonResult.RIGHT_BETTER;
}
if (left.length() < right.length()) {
return ComparisonResult.LEFT_BETTER;
}
if (right.length() < left.length()) {
return ComparisonResult.RIGHT_BETTER;
}

return ComparisonResult.UNDETERMINED;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ public Optional<FieldValuePlausibilityComparator> getPlausibilityComparator(Fiel
if (field.getProperties().contains(FieldProperty.YEAR)) {
return Optional.of(new YearFieldValuePlausibilityComparator());
}
if (field.getProperties().contains(FieldProperty.MONTH)) {
return Optional.of(new MonthPlausibilityComparator());
}
if (InternalField.TYPE_HEADER == field) {
return Optional.of(new EntryTypePlausibilityComparator());
}
Expand Down
2 changes: 1 addition & 1 deletion jablib/src/main/resources/csl-locales
Submodule csl-locales updated 61 files
+0 −7 locales-af-ZA.xml
+5 −7 locales-ar.xml
+3 −7 locales-bal-PK.xml
+0 −7 locales-bg-BG.xml
+3 −7 locales-brh-PK.xml
+0 −7 locales-ca-AD.xml
+0 −7 locales-cs-CZ.xml
+0 −7 locales-cy-GB.xml
+0 −7 locales-da-DK.xml
+0 −7 locales-de-AT.xml
+6 −7 locales-de-CH.xml
+0 −7 locales-de-DE.xml
+0 −7 locales-el-GR.xml
+3 −7 locales-en-GB.xml
+3 −7 locales-en-US.xml
+0 −7 locales-es-CL.xml
+0 −7 locales-es-ES.xml
+0 −7 locales-es-MX.xml
+2 −9 locales-et-EE.xml
+0 −7 locales-eu.xml
+0 −7 locales-fa-IR.xml
+0 −7 locales-fi-FI.xml
+3 −7 locales-fr-CA.xml
+3 −7 locales-fr-FR.xml
+0 −7 locales-gl-ES.xml
+0 −7 locales-he-IL.xml
+0 −7 locales-hi-IN.xml
+0 −7 locales-hr-HR.xml
+0 −7 locales-hu-HU.xml
+24 −34 locales-id-ID.xml
+0 −7 locales-is-IS.xml
+0 −7 locales-it-IT.xml
+2 −7 locales-ja-JP.xml
+0 −7 locales-km-KH.xml
+0 −7 locales-ko-KR.xml
+0 −7 locales-la.xml
+0 −7 locales-lij-IT.xml
+0 −7 locales-lt-LT.xml
+32 −39 locales-lv-LV.xml
+0 −7 locales-mn-MN.xml
+0 −7 locales-ms-MY.xml
+0 −7 locales-nb-NO.xml
+0 −7 locales-nl-NL.xml
+0 −7 locales-nn-NO.xml
+3 −7 locales-pa-PK.xml
+0 −7 locales-pl-PL.xml
+10 −7 locales-pt-BR.xml
+0 −7 locales-pt-PT.xml
+0 −7 locales-ro-RO.xml
+0 −7 locales-ru-RU.xml
+0 −7 locales-sk-SK.xml
+0 −7 locales-sl-SI.xml
+0 −7 locales-sr-Cyrl-RS.xml
+0 −7 locales-sr-Latn-RS.xml
+0 −7 locales-sv-SE.xml
+0 −7 locales-th-TH.xml
+0 −7 locales-tr-TR.xml
+68 −7 locales-uk-UA.xml
+1 −7 locales-vi-VN.xml
+0 −7 locales-zh-CN.xml
+9 −13 locales-zh-TW.xml
2 changes: 1 addition & 1 deletion jablib/src/main/resources/csl-styles
Submodule csl-styles updated 515 files
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.jabref.logic.bibtex.comparator.plausibility;

import org.jabref.logic.bibtex.comparator.ComparisonResult;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

import static org.junit.jupiter.api.Assertions.assertEquals;

class MonthPlausibilityComparatorTest {
private final MonthPlausibilityComparator comparator = new MonthPlausibilityComparator();

@ParameterizedTest
@CsvSource(value = {"{Jun}, jun, RIGHT_BETTER", "Jun, #jun#, RIGHT_BETTER", "June, #jun#, RIGHT_BETTER", "June, 6, RIGHT_BETTER", "June, July, UNDETERMINED", "#jun#, #jul#, UNDETERMINED", "6, #jun#, RIGHT_BETTER", "June, #Apr#, UNDETERMINED", "June, July, UNDETERMINED", "NotAMonth, #jun#, RIGHT_BETTER", "NotAMonth, June, RIGHT_BETTER", ", #jun#, RIGHT_BETTER", "#jun#, , LEFT_BETTER", "06, 6, RIGHT_BETTER", "jan, jan, UNDETERMINED", "#JAN#, #jan#, RIGHT_BETTER"}, nullValues = {"null", "N/A", "EMPTY"})
void compare(String left, String right, ComparisonResult expected) {
assertEquals(expected, comparator.compare(left, right));
}
}
Loading