Skip to content

Commit b05fe63

Browse files
committed
Do not reset chapter one when it contains duplicate id tags
1 parent 2ff2a03 commit b05fe63

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

machine/corpora/update_usfm_parser_handler.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ def end_usfm(self, state: UsfmParserState) -> None:
104104
super().end_usfm(state)
105105

106106
def start_book(self, state: UsfmParserState, marker: str, code: str) -> None:
107-
self._verse_rows_ref = state.verse_ref.copy()
108-
self._update_verse_rows_map()
109-
self._update_verse_rows()
107+
if self._verse_rows_ref.book_num != state.verse_ref.book_num:
108+
self._verse_rows_ref = state.verse_ref.copy()
109+
self._update_verse_rows_map()
110+
self._update_verse_rows()
110111

111112
self._collect_readonly_tokens(state)
112113
self._update_block_stack.append(UsfmUpdateBlock())

tests/corpora/test_update_usfm_parser_handler.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,6 +1294,45 @@ def test_duplicate_verses() -> None:
12941294
assert_usfm_equals(target, result)
12951295

12961296

1297+
def test_duplicate_id_tags() -> None:
1298+
rows = [
1299+
UpdateUsfmRow(scr_ref("MAT 1:0/1:s"), "new section header"),
1300+
UpdateUsfmRow(scr_ref("MAT 1:1"), "new verse 1"),
1301+
UpdateUsfmRow(scr_ref("MAT 1:2"), "new verse 2"),
1302+
UpdateUsfmRow(scr_ref("MAT 1:3"), "new verse 3"),
1303+
UpdateUsfmRow(scr_ref("MAT 1:4"), "new verse 4"),
1304+
]
1305+
usfm = r"""\id MAT
1306+
\s section header
1307+
\c 1
1308+
\s1 beginning-of-chapter header
1309+
\p
1310+
\v 1 verse 1
1311+
\id
1312+
\v 2 verse 2
1313+
\id MAT
1314+
\v 3 verse 3
1315+
\id MRK
1316+
\v 4 verse 4
1317+
"""
1318+
1319+
target = update_usfm(rows, usfm, paragraph_behavior=UpdateUsfmMarkerBehavior.STRIP)
1320+
result = r"""\id MAT
1321+
\s new section header
1322+
\c 1
1323+
\s1 beginning-of-chapter header
1324+
\p
1325+
\v 1 new verse 1
1326+
\id
1327+
\v 2 new verse 2
1328+
\id MAT
1329+
\v 3 new verse 3
1330+
\id MRK
1331+
\v 4 new verse 4
1332+
"""
1333+
assert_usfm_equals(target, result)
1334+
1335+
12971336
def test_pass_remark():
12981337
rows = [
12991338
UpdateUsfmRow(

0 commit comments

Comments
 (0)