NAME
Data::Record::Serialize::Role::Base - Base Role for Data::Record::Serialize
VERSION
version 0.19
DESCRIPTION
Data::Record::Serialize::Role::Base
is the base role for Data::Record::Serialize. It serves the place of a base class, except as a role there is no overhead during method lookup
METHODS
has_types
returns true if "types" has been set.
has_fields
returns true if "fields" has been set.
output_fields
$array_ref = $s->output_fields;
The names of the transformed output fields, in order of output (not obeyed by all encoders);
has_nullify
returns true if "nullify" has been set.
nullified
$fields = $obj->nullified;
Returns a list of fields which are checked for empty values (see "nullify").
This will return undef
if the list is not yet available (for example, if fields names are determined from the first output record and none has been sent).
If the list of fields is available, calling nullified may result in verification of the list of nullified fields against the list of actual fields. A disparity will result in an exception of class Data::Record::Serialize::Error::Role::Base::fields
.
numeric_fields
$array_ref = $s->numeric_fields;
The input field names for those fields deemed to be numeric.
type_index
$hash = $s->type_index;
A hash, keyed off of field type or category. The values are an array of field names. Don't edit this!.
The hash keys are:
I
N
S
numeric
-
N
andI
. not_string
-
Everything but
S
.
output_types
$hash_ref = $s->output_types;
The mapping between output field name and output field type. If the encoder has specified a type map, the output types are the result of that mapping.
ATTRIBUTES
types
A hash or array mapping input field names to types (N
, I
, S
). If an array, the fields will be output in the specified order, provided the encoder permits it (see below, however). For example,
# use order if possible
types => [ c => 'N', a => 'N', b => 'N' ]
# order doesn't matter
types => { c => 'N', a => 'N', b => 'N' }
If fields
is specified, then its order will override that specified here.
To understand how this attribute works in concert with "fields" and "default_type", please see "Fields and their types".
default_type
type
If set, output fields whose types were not specified via the types
attribute will be assigned this type. To understand how this attribute works in concert with "fields" and "types", please see "Fields and their types".
fields
Which fields to output. It may be one of:
An array containing the input names of the fields to be output. The fields will be output in the specified order, provided the encoder permits it.
The string
all
, indicating that all input fields will be output.Unspecified or undefined.
To understand how this attribute works in concert with "types" and "default_type", please see "Fields and their types" in Data::Record::Serialize.
nullify
$obj->nullify( $array | $code | $bool );
Specify which fields should be set to undef
if they are empty. Sinks should encode undef
as the null
value. By default, no fields are nullified.
nullify may be passed:
an array
It should be a list of input field names. These names are verified against the input fields after the first record is read.
a code ref
The coderef is passed the object, and should return a list of input field names. These names are verified against the input fields after the first record is read.
a boolean
If true, all field names are added to the list. When false, the list is emptied.
During verification, a Data::Record::Serialize::Error::Role::Base::fields
error is thrown if non-existent fields are specified. Verification is not performed until the next record is sent (or the "nullified" method is called), so there is no immediate feedback.
format_fields
A hash mapping the input field names to either a sprintf
style format or a coderef. This will be applied prior to encoding the record, but only if the format
attribute is also set. Formats specified here override those specified in format_types
.
The coderef will be called with the value to format as its first argument, and should return the formatted value.
format_types
A hash mapping a field type (N
, I
, S
) to a sprintf
style format or a coderef. This will be applied prior to encoding the record, but only if the format
attribute is also set. Formats specified here may be overridden for specific fields using the format_fields
attribute.
The coderef will be called with the value to format as its first argument, and should return the formatted value.
rename_fields
A hash mapping input to output field names. By default the input field names are used unaltered.
format
If true, format the output fields using the formats specified in the format_fields
and/or format_types
options. The default is false.
SUPPORT
Bugs
Please report any bugs or feature requests to bug-data-record-serialize@rt.cpan.org or through the web interface at: https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Record-Serialize
Source
Source is available at
https://gitlab.com/djerius/data-record-serialize
and may be cloned from
https://gitlab.com/djerius/data-record-serialize.git
SEE ALSO
Please see those modules/websites for more information related to this module.
AUTHOR
Diab Jerius <djerius@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by Smithsonian Astrophysical Observatory.
This is free software, licensed under:
The GNU General Public License, Version 3, June 2007