diff --git a/machine/corpora/paratext_project_settings.py b/machine/corpora/paratext_project_settings.py index 04820cf5..b4ab51fc 100644 --- a/machine/corpora/paratext_project_settings.py +++ b/machine/corpora/paratext_project_settings.py @@ -31,7 +31,10 @@ class ParatextProjectSettings: def get_book_id(self, file_name: str) -> Optional[str]: """Returns None when the file name doesn't match the pattern of a book file name for the project.""" - if not file_name.startswith(self.file_name_prefix) or not file_name.endswith(self.file_name_suffix): + file_name_casefolded = file_name.casefold() + if not file_name_casefolded.startswith(self.file_name_prefix.casefold()) or not file_name_casefolded.endswith( + self.file_name_suffix.casefold() + ): return None book_part: str = file_name[len(self.file_name_prefix) : -len(self.file_name_suffix)] diff --git a/tests/corpora/test_paratext_project_settings.py b/tests/corpora/test_paratext_project_settings.py index d3fe5812..a4725801 100644 --- a/tests/corpora/test_paratext_project_settings.py +++ b/tests/corpora/test_paratext_project_settings.py @@ -113,6 +113,11 @@ def test_get_book_id_wrong_book_part_book_num_book_id() -> None: assert settings.get_book_id("PROJ100.SFM") is None +def test_get_book_id_case_insensitive() -> None: + settings = _create_settings("MAT") + assert settings.get_book_id("PROJMRK.sfm") == "MRK" + + def _create_settings(file_name_form: str) -> ParatextProjectSettings: return ParatextProjectSettings( "id",