Skip to content

Commit df7d6e9

Browse files
authored
Do not reset chapter one when it contains duplicate id tags (#365)
1 parent 14ee6cc commit df7d6e9

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/SIL.Machine/Corpora/UpdateUsfmParserHandler.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,12 @@ public override void EndUsfm(UsfmParserState state)
124124

125125
public override void StartBook(UsfmParserState state, string marker, string code)
126126
{
127-
_verseRowsRef = state.VerseRef;
128-
UpdateVerseRowsMap();
129-
UpdateVerseRows();
127+
if (_verseRowsRef.BookNum != state.VerseRef.BookNum)
128+
{
129+
_verseRowsRef = state.VerseRef;
130+
UpdateVerseRowsMap();
131+
UpdateVerseRows();
132+
}
130133

131134
CollectReadonlyTokens(state);
132135
_updateBlocks.Push(new UsfmUpdateBlock());

tests/SIL.Machine.Tests/Corpora/UpdateUsfmParserHandlerTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,51 @@ public void GetUsfm_DuplicateVerses()
13061306
AssertUsfmEquals(target, resultP);
13071307
}
13081308

1309+
[Test]
1310+
public void GetUsfm_IdTags()
1311+
{
1312+
var rows = new List<UpdateUsfmRow>
1313+
{
1314+
new UpdateUsfmRow(ScrRef("MAT 1:0/1:s"), "new section header"),
1315+
new UpdateUsfmRow(ScrRef("MAT 1:1"), "new verse 1"),
1316+
new UpdateUsfmRow(ScrRef("MAT 1:2"), "new verse 2"),
1317+
new UpdateUsfmRow(ScrRef("MAT 1:3"), "new verse 3"),
1318+
new UpdateUsfmRow(ScrRef("MAT 1:4"), "new verse 4"),
1319+
};
1320+
1321+
string usfm =
1322+
@"\id MAT
1323+
\s section header
1324+
\c 1
1325+
\s1 beginning-of-chapter header
1326+
\p
1327+
\v 1 verse 1
1328+
\id
1329+
\v 2 verse 2
1330+
\id MAT
1331+
\v 3 verse 3
1332+
\id MRK
1333+
\v 4 verse 4
1334+
";
1335+
1336+
string target = UpdateUsfm(rows, usfm, paragraphBehavior: UpdateUsfmMarkerBehavior.Strip);
1337+
string resultP =
1338+
@"\id MAT
1339+
\s new section header
1340+
\c 1
1341+
\s1 beginning-of-chapter header
1342+
\p
1343+
\v 1 new verse 1
1344+
\id
1345+
\v 2 new verse 2
1346+
\id MAT
1347+
\v 3 new verse 3
1348+
\id MRK
1349+
\v 4 new verse 4
1350+
";
1351+
AssertUsfmEquals(target, resultP);
1352+
}
1353+
13091354
[Test]
13101355
public void GetUsfm_PreferExisting_AddRemark()
13111356
{

0 commit comments

Comments
 (0)