Fix search of numbers inside fractions

This commit is contained in:
Calixte Denizet 2023-04-11 20:57:26 +02:00
parent c1c372c320
commit d8795f9f8f
2 changed files with 71 additions and 2 deletions

View File

@ -381,6 +381,66 @@ describe("pdf_find_controller", function () {
pageMatches: [[27, 54]],
pageMatchesLength: [[1, 1]],
});
await testSearch({
eventBus,
pdfFindController,
state: {
query: "1",
},
matchesPerPage: [3],
selectedMatch: {
pageIndex: 0,
matchIndex: 0,
},
pageMatches: [[27, 54, 55]],
pageMatchesLength: [[1, 1, 1]],
});
await testSearch({
eventBus,
pdfFindController,
state: {
query: "2",
},
matchesPerPage: [2],
selectedMatch: {
pageIndex: 0,
matchIndex: 0,
},
pageMatches: [[27, 54]],
pageMatchesLength: [[1, 1]],
});
await testSearch({
eventBus,
pdfFindController,
state: {
query: "1/",
},
matchesPerPage: [3],
selectedMatch: {
pageIndex: 0,
matchIndex: 0,
},
pageMatches: [[27, 54, 55]],
pageMatchesLength: [[1, 1, 1]],
});
await testSearch({
eventBus,
pdfFindController,
state: {
query: "1/21",
},
matchesPerPage: [1],
selectedMatch: {
pageIndex: 0,
matchIndex: 0,
},
pageMatches: [[54]],
pageMatchesLength: [[2]],
});
});
it("performs a normal search, where the text with diacritics is normalized", async function () {

View File

@ -350,8 +350,10 @@ function getOriginalIndex(diffs, pos, len) {
return [pos, len];
}
// First char in the new string.
const start = pos;
const end = pos + len;
// Last char in the new string.
const end = pos + len - 1;
let i = binarySearchFirstItem(diffs, x => x[0] >= start);
if (diffs[i][0] > start) {
--i;
@ -362,7 +364,14 @@ function getOriginalIndex(diffs, pos, len) {
--j;
}
return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]];
// First char in the old string.
const oldStart = start + diffs[i][1];
// Last char in the old string.
const oldEnd = end + diffs[j][1];
const oldLen = oldEnd + 1 - oldStart;
return [oldStart, oldLen];
}
/**