拒绝检查与匹配短路的实际规则
策略的具体实现如下。
ts
export function breakWhile(
occur: readonly BreakPredicate[],
error?: BreakReason,
tags?: readonly string[],
): void;
export function matchRule<Input, Result>(
rules: readonly MatchRule<Input, Result>[],
input: Input,
): Result | undefined {
return rules
.find(
(rule) =>
rule.pattern === undefined ||
booleanResult(rule.pattern(input), 'Rule patterns must return boolean synchronously'),
)
?.handle(input);
}
export function walkRules(rules: readonly WalkRule[]): void;