Skip to contents

Compares names(value) with a reference. One verb covers "exactly these names in this order", "only allowed names" and "at least these names".

Usage

require_names(
  restriction,
  names,
  mode = c("identical", "subset", "superset", "permutation")
)

Arguments

restriction

a restriction object.

names

character vector of reference names.

mode

how the observed names relate to names:

  • "identical": the same names in the same order;

  • "subset": every observed name is in names (no unexpected names);

  • "superset": every name in names is present (nothing missing);

  • "permutation": the same names in any order, each occurring as often.

Value

The modified restriction object.

Details

A value without names has no names: it fails every mode except "subset". The failure lists the missing and the unexpected names.

Examples

cfg <- restrict("cfg") |> require_names(c("alpha", "beta"), mode = "subset")
cfg(list(alpha = 1))
try(cfg(list(alpha = 1, gamma = 2)))
#> Error : cfg: unexpected name: "gamma"