fix(dees-table): Improve Lucene range comparisons, pin monaco-editor to 0.52.2, and add local dev metadata
This commit is contained in:
@@ -99,12 +99,24 @@ export function compileLucenePredicate<T>(
|
||||
const a = coerce(val);
|
||||
const lo = coerce(lower);
|
||||
const up = coerce(upper);
|
||||
// if types differ, compare string forms
|
||||
if (a.t !== lo.t || a.t !== up.t) {
|
||||
const as = String(val ?? '').toLowerCase();
|
||||
return cmp(as, lower) >= 0 && cmp(as, upper) <= 0;
|
||||
// All strings: lexical compare
|
||||
if (a.t === 's' && lo.t === 's' && up.t === 's') {
|
||||
const av = a.v as string;
|
||||
return cmp(av, lo.v as string) >= 0 && cmp(av, up.v as string) <= 0;
|
||||
}
|
||||
return a.v >= (lo.v as number) && a.v <= (up.v as number);
|
||||
// All numbers
|
||||
if (a.t === 'n' && lo.t === 'n' && up.t === 'n') {
|
||||
const av = a.v as number;
|
||||
return av >= (lo.v as number) && av <= (up.v as number);
|
||||
}
|
||||
// All dates (as numbers)
|
||||
if (a.t === 'd' && lo.t === 'd' && up.t === 'd') {
|
||||
const av = a.v as number;
|
||||
return av >= (lo.v as number) && av <= (up.v as number);
|
||||
}
|
||||
// Fallback: compare string forms
|
||||
const as = String(val ?? '').toLowerCase();
|
||||
return cmp(as, lower) >= 0 && cmp(as, upper) <= 0;
|
||||
};
|
||||
return (row: T) => {
|
||||
for (const clause of ast.clauses) {
|
||||
|
Reference in New Issue
Block a user