NAME
Catmandu::Fix::Bind::visitor - a binder that computes Fix-es for every element in record
SYNOPSIS
# If data is like:numbers:- one- two- threeperson:name: jennieage: 44color:- green- purple- brown- more:foo: bardo visitor()upcase(scalar) # upcase every scalar value in the recordend# will producenumbers:- ONE- TWO- THREEperson:name: JENNIEage: 44color:- GREEN- PURPLE- BROWN- more:foo: BARdo visitor()# upcase all the 'name' fields in the recordif all_match(key,name)upcase(scalar)endenddo visitor()# upcase all the field names in the recordupcase(key)end
DESCRIPTION
The visitor binder will iterate over all the elements in a record and perform fixes on them.
Special node names are available to process every visited element:
- scalar
-
Process a Fix on every scalar value. E.g.
upcase(scalar)replace_all(scalar,'$','tested')
- array
-
Process a Fix on every array value. E.g.
sort_field(array)Values need to be put in the 'array' field to be available for fixes. The scope of the array is limited to the array visited.
- hash
-
Process a Fix on every hash value. E.g.
copy_field(hash.age,hash.age2)Values need to be put in the 'hash' field to be available for fixes. The scope of the hash is limited to the hash visited.
- key
-
Provides access to the key on which the scalar,array or hash value is found. Eg.
# Upcase all 'name' fields in the recordif all_match(key,name)upcase(scalar)end
CONFIGURATION
path
A path in the data to visit:
# Visit any fielddo visitor()...end# Visit only the fields at my.deep.fielddo visitor(path: my.deep.field)...end
SEE ALSO
Catmandu::Fix::Bind