Skip to content

Latest commit

 

History

History
54 lines (43 loc) · 1.23 KB

crop.md

File metadata and controls

54 lines (43 loc) · 1.23 KB

Function

crop — remove fields from input value that are missing in a specified type

Synopsis

crop(val: any, t: type) -> any

Description

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.

Examples

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"