import { type Pattern } from "https://deno.land/x/fuzzy_octo_guacamole@v2.0.0/mod.ts";
const { Pattern } = Pattern;
Pattern<a>
is the generic type for patterns matching a value of type a
. A pattern can be any (nested) javascript value.
They can also be wildcards, like P._
, P.string
, P.number
,
or other matchers, like P.when(predicate)
, P.not(pattern)
, etc.
definition: Matcher<a, unknown, any, any> | (a extends Primitives ? a : unknown extends a ? UnknownPattern : a extends readonly (infer i)[] ? a extends readonly [any, ...any] ? readonly [index in keyof a]: Pattern<a[index]> : readonly [] | readonly [Pattern<i>, ...Pattern<i>[]] : a extends Map<infer k, infer v> ? Map<k, Pattern<v>> : a extends Set<infer v> ? Set<Pattern<v>> : a extends object ? readonly [k in keyof a]?: Pattern<Exclude<a[k], undefined>> : a)
definition: Matcher<a, unknown, any, any> | (a extends Primitives ? a : unknown extends a ? UnknownPattern : a extends readonly (infer i)[] ? a extends readonly [any, ...any] ? readonly [index in keyof a]: Pattern<a[index]> : readonly [] | readonly [Pattern<i>, ...Pattern<i>[]] : a extends Map<infer k, infer v> ? Map<k, Pattern<v>> : a extends Set<infer v> ? Set<Pattern<v>> : a extends object ? readonly [k in keyof a]?: Pattern<Exclude<a[k], undefined>> : a)
import { Pattern } from "https://deno.land/x/fuzzy_octo_guacamole@v2.0.0/mod.ts";
const { Pattern } = Pattern;
P.any
is a wildcard pattern, matching any value.
import { Pattern } from "https://deno.land/x/fuzzy_octo_guacamole@v2.0.0/mod.ts";
const { Pattern } = Pattern;
P.optional(subpattern)
takes a sub pattern and returns a pattern which matches if the
key is undefined or if it is defined and the sub pattern matches its value.
Parameters
pattern: p
P.when((value) => boolean)
returns a pattern which matches
if the predicate returns true for the current input.
Type Parameters
p extends (value: input) => unknown
Parameters
predicate: p
P.select()
is a pattern which will always match,
and will inject the selected piece of input in the handler function.
Parameters
patternOrKey: patternOrKey
Returns
patternOrKey extends string ? SelectP<patternOrKey> : SelectP<symbols.anonymousSelectKey, input, patternOrKey>