def missing_items

cli@0.2.0.0 · cli.bend:3995

import cli@0.2.0.0/cli.bend as Cli
import Base

3995# What E06 lists, in items' order: each required arg not given, and each
3996# need_one group with no arg given that done does not name yet.
3997def missing_items(items: List<&2, SpecItem>,
3998    +all_items: List<&2, SpecItem>,
3999    +fields: List<&2, Field>, +done: List<&2, String>) ->
4000    List<&2, String>:
4001  match items:
4002    case Nil{}: Nil{}
4003    case SpecArg{info} <> tail:
4004      List.append(&2, String,
4005        missing_arg(info, fields),
4006        missing_items(tail, all_items, fields, done))
4007    case SpecOther{NeedOne{+name}} <> tail:
4008      List.append(&2, String,
4009        missing_once(List.contains(~String, ~String.eq, done, name),
4010          all_items, fields, name),
4011        missing_items(tail, all_items, fields, name <> done))
4012    case head <> tail:
4013      missing_items(tail, all_items, fields, done)

Uses (10)

Used by (1)