Data-Record-Serialize
view release on metacpan or search on metacpan
lib/Data/Record/Serialize/Role/Default.pm view on Meta::CPAN
package Data::Record::Serialize::Role::Default;
# ABSTRACT: Default methods for Data::Record::Serialize
use v5.12;
use Moo::Role;
our $VERSION = '2.03';
use Hash::Util qw[ hv_store ];
use Ref::Util qw[ is_coderef ];
use Data::Record::Serialize::Error { errors => ['fields'] }, -all;
use namespace::clean;
## no critic( Subroutines::ProhibitBuiltinHomonyms )
# provide default if not already defined
sub send {
my $self = shift;
$self->_needs_eol
? $self->say( $self->encode( @_ ) )
: $self->print( $self->encode( @_ ) );
}
# just in case they're not defined in preceding roles
sub setup { }
sub finalize { }
sub _map_types { }
sub _needs_eol { 1 }
around 'setup' => sub {
my ( $orig, $self, $data ) = @_;
$self->setup_from_record( $data );
$orig->( $self );
$self->_set__run_setup( 0 );
};
before 'close' => sub {
my ( $self, @args ) = @_;
$self->finalize( @args );
};
before 'send' => sub {
my ( $self, $data ) = @_;
( run in 1.290 second using v1.01-cache-2.11-cpan-39bf76dae61 )