crop — remove fields from input value that are missing in a specified type
crop(val: any, t: type) -> any
The crop function operates on record values (or records within a nested value)
and returns a result such that any fields that are present in val
but not in
record type t
are removed.
Cropping is a useful when you want records to "fit" a schema tightly.
If val
is a record (or if any of its nested values is a record):
- absent fields are ignored and omitted from the result,
- fields are matched by name and are order independent and the input order is retained, and
- leaf types are ignored, i.e., no casting occurs.
If val
is not a record, it is returned unmodified.
Crop a record
echo '{a:1,b:2}' | super -z -c 'crop(this, <{a:int64}>)' -
produces
{a:1}
Crop an array of records
echo '[{a:1,b:2},{a:3,b:4}]' | super -z -c 'crop(this, <[{a:int64}]>)' -
produces
[{a:1},{a:3}]
Cropped primitives are returned unmodified
echo '10.0.0.1 1 "foo"' | super -z -c 'crop(this, <{a:int64}>)' -
produces
10.0.0.1
1
"foo"