diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-08-11 21:40:54 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-08-11 21:50:20 +0530 |
| commit | 845d503bb16cb5046a4fec6d046b7b527a080187 (patch) | |
| tree | a9f8fdf4510ad4d61e8d105065be9071946e2bdf /src/utils/adt.ts | |
| parent | 5a9942fde65787b35d4eb8e3441af6fe68819612 (diff) | |
| download | css-everything-845d503bb16cb5046a4fec6d046b7b527a080187.tar.gz css-everything-845d503bb16cb5046a4fec6d046b7b527a080187.zip | |
chore: adds prettier
Diffstat (limited to 'src/utils/adt.ts')
| -rw-r--r-- | src/utils/adt.ts | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/utils/adt.ts b/src/utils/adt.ts index 78ab667..45d9e50 100644 --- a/src/utils/adt.ts +++ b/src/utils/adt.ts @@ -1,14 +1,18 @@ type TagValue<T, N> = T extends Tag<N, infer V> ? V : never -export const match = - <R, T extends Tag<string, any>>(tag: T, pattern: { +export const match = <R, T extends Tag<string, any>>( + tag: T, + pattern: { [key in T['tag'] | '_']?: (v: TagValue<T, key>) => R - }): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value) + }, +): R => ((pattern as any)[tag.tag] || (pattern._ as any))(tag.value) -export const matchString = - <R, T extends string = string>(key: T, pattern: { +export const matchString = <R, T extends string = string>( + key: T, + pattern: { [key in T | '_']?: (key: key) => R - }): R => ((pattern as any)[key] || (pattern._ as any))(key) + }, +): 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] @@ -26,4 +30,3 @@ export const constructors = <T extends Tag<string, any>>(): { }, }, ) as any - |
