The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Record::Serialize::Role::Base - Base Role for Data::Record::Serialize

VERSION

version 0.21

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

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

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.

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 and I.

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.

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