From d40c3837010b3f84776a52122f3fabc3f06ba6d4 Mon Sep 17 00:00:00 2001 From: Jonas Kello Date: Mon, 30 Jan 2023 16:51:32 +0100 Subject: [PATCH 1/2] Add overloads --- packages/property/src/property-filter.ts | 44 +++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/packages/property/src/property-filter.ts b/packages/property/src/property-filter.ts index a77b1837..0b6dd1d6 100644 --- a/packages/property/src/property-filter.ts +++ b/packages/property/src/property-filter.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/unified-signatures */ import { UnitMap } from "uom"; import * as PropertyValueSet from "./property-value-set"; import * as PropertyValue from "./property-value"; @@ -81,12 +82,53 @@ export function isSyntaxValid( return true; } +export const isValidFromString = ( + properties: PropertyValueSet.PropertyValueSet | string, + filter: PropertyFilter | string, + unitLookup: UnitMap.UnitLookup, + comparer: PropertyValue.Comparer = PropertyValue.defaultComparer +): boolean => { + const pvs = typeof properties === "string" ? PropertyValueSet.fromString(properties, unitLookup) : properties; + const pf = typeof filter === "string" ? fromString(filter, unitLookup)! : filter; + return pf._evaluate(pvs, comparer); +}; + export function isValid( properties: PropertyValueSet.PropertyValueSet, filter: PropertyFilter, + comparer?: PropertyValue.Comparer +): boolean; +export function isValid( + properties: string, + filter: PropertyFilter, + unitLookup: UnitMap.UnitLookup, + comparer?: PropertyValue.Comparer +): boolean; +export function isValid( + properties: PropertyValueSet.PropertyValueSet, + filter: string, + unitLookup: UnitMap.UnitLookup, + comparer?: PropertyValue.Comparer +): boolean; +export function isValid( + properties: string, + filter: string, + unitLookup: UnitMap.UnitLookup, + comparer?: PropertyValue.Comparer +): boolean; +export function isValid( + properties: PropertyValueSet.PropertyValueSet | string, + filter: PropertyFilter | string, + unitLookupOrComparer: UnitMap.UnitLookup | PropertyValue.Comparer = PropertyValue.defaultComparer, comparer: PropertyValue.Comparer = PropertyValue.defaultComparer ): boolean { - return filter._evaluate(properties, comparer); + const pvs = + typeof properties === "string" + ? PropertyValueSet.fromString(properties, unitLookupOrComparer as UnitMap.UnitLookup) + : properties; + const pf = + typeof filter === "string" ? fromStringOrEmpty(filter, unitLookupOrComparer as UnitMap.UnitLookup) : filter; + return pf._evaluate(pvs, comparer); } export function isValidMatchMissing( From 9a4ced0f28308416f01bcac7535e60542b61b8ad Mon Sep 17 00:00:00 2001 From: Jonas Kello Date: Mon, 30 Jan 2023 17:31:56 +0100 Subject: [PATCH 2/2] Use correct comparer param --- packages/property/src/property-filter.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/property/src/property-filter.ts b/packages/property/src/property-filter.ts index 0b6dd1d6..1b0be4de 100644 --- a/packages/property/src/property-filter.ts +++ b/packages/property/src/property-filter.ts @@ -122,13 +122,18 @@ export function isValid( unitLookupOrComparer: UnitMap.UnitLookup | PropertyValue.Comparer = PropertyValue.defaultComparer, comparer: PropertyValue.Comparer = PropertyValue.defaultComparer ): boolean { + // All overloads that pass strings will also pass unitLookupOrComparer as a UnitLookup function const pvs = typeof properties === "string" ? PropertyValueSet.fromString(properties, unitLookupOrComparer as UnitMap.UnitLookup) : properties; const pf = typeof filter === "string" ? fromStringOrEmpty(filter, unitLookupOrComparer as UnitMap.UnitLookup) : filter; - return pf._evaluate(pvs, comparer); + const cmp = + typeof properties === "string" || typeof filter === "string" + ? comparer + : (unitLookupOrComparer as PropertyValue.Comparer); + return pf._evaluate(pvs, cmp); } export function isValidMatchMissing(