Support item quantities and unique result lines
This commit is contained in:
+22
-4
@@ -51,13 +51,22 @@ export function parseTooltipText(text) {
|
||||
.split(/\r?\n/)
|
||||
.map(normalizeOcrText)
|
||||
.filter(Boolean);
|
||||
const priceIndex = lines.findIndex((line) => /pr[i1l]ce\s*[:;]?/i.test(line));
|
||||
const priceIndex = lines.findIndex(
|
||||
(line) =>
|
||||
/\d[\d\s,.'`]*\s*adena/i.test(line) ||
|
||||
/pr[i1l]ce\s*[:;]?/i.test(line) ||
|
||||
/^\s*\d[\d\s,.'`]*\s*$/.test(line),
|
||||
);
|
||||
|
||||
if (priceIndex < 0) return null;
|
||||
|
||||
const priceLine = lines[priceIndex];
|
||||
const priceMatch = priceLine.match(/pr[i1l]ce\s*[:;]?\s*([\d\s,.'`]+)\s*adena/i);
|
||||
const digits = priceMatch?.[1].replace(/\D/g, "") ?? "";
|
||||
const priceText =
|
||||
priceLine.match(/([\d][\d\s,.'`]*)\s*adena/i)?.[1] ??
|
||||
priceLine.match(/pr[i1l]ce\s*[:;]?\s*([\d][\d\s,.'`]*)/i)?.[1] ??
|
||||
priceLine.match(/^\s*([\d][\d\s,.'`]*)\s*$/)?.[1] ??
|
||||
"";
|
||||
const digits = priceText.replace(/\D/g, "");
|
||||
let name = lines[priceIndex - 1] ?? "";
|
||||
|
||||
if (!name) {
|
||||
@@ -66,7 +75,16 @@ export function parseTooltipText(text) {
|
||||
|
||||
if (!name || !digits) return null;
|
||||
|
||||
return { name, priceAdena: Number(digits), rawText: lines.join("\n") };
|
||||
const quantityMatch = name.match(/^(.*?)\s*\(([\d][\d\s,.]*)\)\s*$/);
|
||||
const quantityText = quantityMatch?.[2].replace(/\D/g, "") ?? "";
|
||||
if (quantityMatch) name = quantityMatch[1].trim();
|
||||
|
||||
return {
|
||||
name,
|
||||
quantity: quantityText ? Number(quantityText) : null,
|
||||
priceAdena: Number(digits),
|
||||
rawText: lines.join("\n"),
|
||||
};
|
||||
}
|
||||
|
||||
export function isCalibrationReady(calibration) {
|
||||
|
||||
Reference in New Issue
Block a user