Skip to content

Commit eb5578f

Browse files
committed
Refactor interlinearXmlParser.ts to ensure index and length attributes are properly validated as finite numbers
1 parent fa8ebb2 commit eb5578f

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

src/parsers/interlinearXmlParser.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ function extractPunctuationsFromVerse(verseDataElement: ParsedVerseData): Punctu
126126
.filter((el): el is ParsedPunctuation & { Range: ParsedRange } => {
127127
const rangeElement = el.Range;
128128
if (!rangeElement) return false;
129-
const indexRaw = rangeElement['@_Index'];
130-
const lengthRaw = rangeElement['@_Length'];
131-
return indexRaw !== undefined && lengthRaw !== undefined;
129+
const indexRaw = Number(rangeElement['@_Index']);
130+
const lengthRaw = Number(rangeElement['@_Length']);
131+
return Number.isFinite(indexRaw) && Number.isFinite(lengthRaw);
132132
})
133133
.map((el) => {
134134
const rangeElement = el.Range;
@@ -161,9 +161,9 @@ function extractClustersFromVerse(verseDataElement: ParsedVerseData): ClusterDat
161161
throw new Error('Invalid XML: Cluster missing required Range element');
162162
}
163163

164-
const index = rangeElement['@_Index'];
165-
const length = rangeElement['@_Length'];
166-
if (index === undefined || length === undefined) {
164+
const index = Number(rangeElement['@_Index']);
165+
const length = Number(rangeElement['@_Length']);
166+
if (Number.isFinite(index) || Number.isFinite(length)) {
167167
throw new Error('Invalid XML: Range missing required Index or Length attributes');
168168
}
169169

0 commit comments

Comments
 (0)