From e01cb693bc5737792e2b37abfd98d2d8f81bac4d Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Thu, 10 Aug 2023 22:45:00 +0530 Subject: feat: adds simple evaluator --- src/utils/adt.ts | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/utils/adt.ts') diff --git a/src/utils/adt.ts b/src/utils/adt.ts index e9a6c51..7234f67 100644 --- a/src/utils/adt.ts +++ b/src/utils/adt.ts @@ -5,6 +5,11 @@ export const match = [key in T['tag'] | '_']?: (v: TagValue) => R }): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value) +export const matchString = + (key: T, pattern: { + [key in T | '_']?: (key: key) => R + }): R => ((pattern as any)[key] || (pattern._ as any))(key) + type Tag = { tag: N; value: V } export type Enum = { [N in keyof T]: Tag }[keyof T] -- cgit v1.3.1