@dpkit/table
Version:
Data Package implementation in TypeScript.
21 lines • 3.53 kB
JavaScript
import { DataType } from "nodejs-polars";
import { col, lit, when } from "nodejs-polars";
const DEFAULT_TRUE_VALUES = ["true", "True", "TRUE", "1"];
const DEFAULT_FALSE_VALUES = ["false", "False", "FALSE", "0"];
export function parseBooleanField(field, expr) {
expr = expr ?? col(field.name);
const trueValues = field.trueValues || DEFAULT_TRUE_VALUES;
const falseValues = field.falseValues || DEFAULT_FALSE_VALUES;
for (const value of trueValues)
expr = expr.replace(value, "1");
for (const value of falseValues)
expr = expr.replace(value, "0");
expr = expr.cast(DataType.Int8);
return when(expr.eq(1))
.then(lit(true))
.when(expr.eq(0))
.then(lit(false))
.otherwise(lit(null))
.alias(field.name);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL2Jvb2xlYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHOUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3pELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUU3RCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBbUIsRUFBRSxJQUFXO0lBQ2hFLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLG1CQUFtQixDQUFBO0lBQzFELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksb0JBQW9CLENBQUE7SUFFN0QsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVztRQUFFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUVoRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQixTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQm9vbGVhbkZpZWxkIH0gZnJvbSBcIkBkcGtpdC9jb3JlXCJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuaW1wb3J0IHsgY29sLCBsaXQsIHdoZW4gfSBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgdHlwZSB7IEV4cHIgfSBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5cbmNvbnN0IERFRkFVTFRfVFJVRV9WQUxVRVMgPSBbXCJ0cnVlXCIsIFwiVHJ1ZVwiLCBcIlRSVUVcIiwgXCIxXCJdXG5jb25zdCBERUZBVUxUX0ZBTFNFX1ZBTFVFUyA9IFtcImZhbHNlXCIsIFwiRmFsc2VcIiwgXCJGQUxTRVwiLCBcIjBcIl1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQm9vbGVhbkZpZWxkKGZpZWxkOiBCb29sZWFuRmllbGQsIGV4cHI/OiBFeHByKSB7XG4gIGV4cHIgPSBleHByID8/IGNvbChmaWVsZC5uYW1lKVxuXG4gIGNvbnN0IHRydWVWYWx1ZXMgPSBmaWVsZC50cnVlVmFsdWVzIHx8IERFRkFVTFRfVFJVRV9WQUxVRVNcbiAgY29uc3QgZmFsc2VWYWx1ZXMgPSBmaWVsZC5mYWxzZVZhbHVlcyB8fCBERUZBVUxUX0ZBTFNFX1ZBTFVFU1xuXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdHJ1ZVZhbHVlcykgZXhwciA9IGV4cHIucmVwbGFjZSh2YWx1ZSwgXCIxXCIpXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgZmFsc2VWYWx1ZXMpIGV4cHIgPSBleHByLnJlcGxhY2UodmFsdWUsIFwiMFwiKVxuXG4gIGV4cHIgPSBleHByLmNhc3QoRGF0YVR5cGUuSW50OClcblxuICByZXR1cm4gd2hlbihleHByLmVxKDEpKVxuICAgIC50aGVuKGxpdCh0cnVlKSlcbiAgICAud2hlbihleHByLmVxKDApKVxuICAgIC50aGVuKGxpdChmYWxzZSkpXG4gICAgLm90aGVyd2lzZShsaXQobnVsbCkpXG4gICAgLmFsaWFzKGZpZWxkLm5hbWUpXG59XG4iXX0=