aboutsummaryrefslogtreecommitdiff
path: root/src/utils/adt.ts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2023-08-10 18:18:46 +0530
committerAkshay Nair <phenax5@gmail.com>2023-08-10 18:18:46 +0530
commitdb97b1a9c42fe945ca37256f5ee18d52c6aa32b4 (patch)
tree1da3da4a99192be8ad10b2931d447c2cc3f45036 /src/utils/adt.ts
parent6a04167058b59b54b183104a1cf1b1b2cf8d7e9a (diff)
downloadcss-everything-db97b1a9c42fe945ca37256f5ee18d52c6aa32b4.tar.gz
css-everything-db97b1a9c42fe945ca37256f5ee18d52c6aa32b4.zip
feat: adds parser for simple expressions
Diffstat (limited to 'src/utils/adt.ts')
-rw-r--r--src/utils/adt.ts6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/utils/adt.ts b/src/utils/adt.ts
index c19398b..e9a6c51 100644
--- a/src/utils/adt.ts
+++ b/src/utils/adt.ts
@@ -1,11 +1,9 @@
type TagValue<T, N> = T extends Tag<N, infer V> ? V : never
export const match =
- <R, T extends Tag<string, any>>(pattern: {
+ <R, T extends Tag<string, any>>(tag: T, pattern: {
[key in T['tag'] | '_']?: (v: TagValue<T, key>) => R
- }) =>
- (tag: T): R =>
- ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value)
+ }): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value)
type Tag<N, V> = { tag: N; value: V }
export type Enum<T> = { [N in keyof T]: Tag<N, T[N]> }[keyof T]