@dpkit/table
Version:
Data Package implementation in TypeScript.
23 lines • 3.59 kB
JavaScript
import { DataType } from "nodejs-polars";
import { col } from "nodejs-polars";
// TODO: support categories
// TODO: support categoriesOrder
export function parseIntegerField(field, expr) {
expr = expr ?? col(field.name);
// Handle non-bare numbers (with currency symbols, percent signs, etc.)
if (field.bareNumber === false) {
// Preserve the minus sign when removing leading characters
expr = expr.str.replaceAll("^[^\\d\\-]+", "");
expr = expr.str.replaceAll("[^\\d\\-]+$", "");
}
// Handle group character (thousands separator)
if (field.groupChar) {
// Escape special characters for regex
const escapedGroupChar = field.groupChar.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
expr = expr.str.replaceAll(escapedGroupChar, "");
}
// Cast to int64 (will handle values up to 2^63-1)
expr = expr.cast(DataType.Int64);
return expr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL2ludGVnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR25DLDJCQUEyQjtBQUMzQixnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQW1CLEVBQUUsSUFBVztJQUNoRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFOUIsdUVBQXVFO0lBQ3ZFLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMvQiwyREFBMkQ7UUFDM0QsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUM3QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEIsc0NBQXNDO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzlDLHFCQUFxQixFQUNyQixNQUFNLENBQ1AsQ0FBQTtRQUNELElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEludGVnZXJGaWVsZCB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IGNvbCB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgRXhwciB9IGZyb20gXCJub2RlanMtcG9sYXJzXCJcblxuLy8gVE9ETzogc3VwcG9ydCBjYXRlZ29yaWVzXG4vLyBUT0RPOiBzdXBwb3J0IGNhdGVnb3JpZXNPcmRlclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50ZWdlckZpZWxkKGZpZWxkOiBJbnRlZ2VyRmllbGQsIGV4cHI/OiBFeHByKSB7XG4gIGV4cHIgPSBleHByID8/IGNvbChmaWVsZC5uYW1lKVxuXG4gIC8vIEhhbmRsZSBub24tYmFyZSBudW1iZXJzICh3aXRoIGN1cnJlbmN5IHN5bWJvbHMsIHBlcmNlbnQgc2lnbnMsIGV0Yy4pXG4gIGlmIChmaWVsZC5iYXJlTnVtYmVyID09PSBmYWxzZSkge1xuICAgIC8vIFByZXNlcnZlIHRoZSBtaW51cyBzaWduIHdoZW4gcmVtb3ZpbmcgbGVhZGluZyBjaGFyYWN0ZXJzXG4gICAgZXhwciA9IGV4cHIuc3RyLnJlcGxhY2VBbGwoXCJeW15cXFxcZFxcXFwtXStcIiwgXCJcIilcbiAgICBleHByID0gZXhwci5zdHIucmVwbGFjZUFsbChcIlteXFxcXGRcXFxcLV0rJFwiLCBcIlwiKVxuICB9XG5cbiAgLy8gSGFuZGxlIGdyb3VwIGNoYXJhY3RlciAodGhvdXNhbmRzIHNlcGFyYXRvcilcbiAgaWYgKGZpZWxkLmdyb3VwQ2hhcikge1xuICAgIC8vIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIHJlZ2V4XG4gICAgY29uc3QgZXNjYXBlZEdyb3VwQ2hhciA9IGZpZWxkLmdyb3VwQ2hhci5yZXBsYWNlKFxuICAgICAgL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLFxuICAgICAgXCJcXFxcJCZcIixcbiAgICApXG4gICAgZXhwciA9IGV4cHIuc3RyLnJlcGxhY2VBbGwoZXNjYXBlZEdyb3VwQ2hhciwgXCJcIilcbiAgfVxuXG4gIC8vIENhc3QgdG8gaW50NjQgKHdpbGwgaGFuZGxlIHZhbHVlcyB1cCB0byAyXjYzLTEpXG4gIGV4cHIgPSBleHByLmNhc3QoRGF0YVR5cGUuSW50NjQpXG4gIHJldHVybiBleHByXG59XG4iXX0=