def want_verdict
cli@0.2.0.0 · cli.bend:4494
import cli@0.2.0.0/cli.bend as Cli
import Base
4494
4495
4496def want_verdict(want: Want, +id: String, +kind: UsageKind,
4497 +attrs: List<&2, Item>) -> Maybe<&2, String>:
4498 match want:
4499 case WFlag{}:
4500 kind_verdict(kind_flag(kind), id, kind, attrs)
4501 case WCount{}:
4502 kind_verdict(kind_count(kind), id, kind, attrs)
4503 case WValue{+stem, +form}:
4504 Maybe.or(&2, String,
4505 kind_verdict(value_fits(stem, form, kind, attrs), id, kind, attrs),
4506 absent_verdict(Bool.and(form_one(form), may_absent(kind, attrs)),
4507 id, stem))
4508 case WAny{}:
4509 None{}
4510 case WChoose{opt, keys}:
4511 Maybe.or(&2, String,
4512 kind_verdict(choose_fits(kind, attrs), id, kind, attrs),
4513 Maybe.or(&2, String,
4514 absent_verdict(Bool.and(Bool.not(opt), may_absent(kind, attrs)),
4515 id, "choose"),
4516 keys_verdict(find_one_of(attrs), keys, id)))
4517 case WProgram{opt}:
4518 Maybe.or(&2, String,
4519 kind_verdict(program_fits(kind, attrs), id, kind, attrs),
4520 Maybe.or(&2, String,
4521 absent_verdict(Bool.and(Bool.not(opt),
4522 Bool.not(always_present(kind, attrs))), id, "program"),
4523 rest_verdict(has_rest(attrs), id)))