aboutsummaryrefslogtreecommitdiff
path: root/src/utils/adt.ts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2023-08-10 22:45:00 +0530
committerAkshay Nair <phenax5@gmail.com>2023-08-10 22:45:00 +0530
commite01cb693bc5737792e2b37abfd98d2d8f81bac4d (patch)
tree894d367e14f5a7edac5a80fb7caf9f9a84727d1e /src/utils/adt.ts
parent2102e7608b1b3634a651cb40508d2f560f3eeb05 (diff)
downloadcss-everything-e01cb693bc5737792e2b37abfd98d2d8f81bac4d.tar.gz
css-everything-e01cb693bc5737792e2b37abfd98d2d8f81bac4d.zip
feat: adds simple evaluator
Diffstat (limited to '')
-rw-r--r--src/utils/adt.ts5
1 files changed, 5 insertions, 0 deletions
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<T, key>) => R
}): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value)
+export const matchString =
+ <R, T extends string>(key: T, pattern: {
+ [key in T | '_']?: (key: key) => R
+ }): R => ((pattern as any)[key] || (pattern._ as any))(key)
+
type Tag<N, V> = { tag: N; value: V }
export type Enum<T> = { [N in keyof T]: Tag<N, T[N]> }[keyof T]