BoutrosLab-TSVStream

 view release on metacpan or  search on metacpan

lib/BoutrosLab/TSVStream/Format/AnnovarInput/Human/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::Human::Dyn

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::Human::Dyn;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::Human
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

=over

lib/BoutrosLab/TSVStream/Format/AnnovarInput/Human/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::Human::Fixed

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::Human::Fixed;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::Human
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanNoChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanNoChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanNoChr::Dyn;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanNoChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanNoChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanNoChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanNoChr::Fixed;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanNoChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanTag/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanTag::Dyn

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanTag::Dyn;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTag
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

=over

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanTag/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanTag::Fixed

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanTag::Fixed;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTag
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanTagNoChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanTagNoChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanTagNoChr::Dyn;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTagNoChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/HumanTagNoChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::AnnovarInput::HumanTagNoChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::HumanTagNoChr::Fixed;

use Moose;
use namespace::autoclean;

with qw(
	BoutrosLab::TSVStream::Format::AnnovarInput::Role
	BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTagNoChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/AnnovarInput/Role.pm  view on Meta::CPAN


=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::Role;

use Moose::Role;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw( AI_Ref );
use BoutrosLab::TSVStream::Format::VCF::Types qw( VCF_Alt );
use MooseX::Types::Moose qw( ArrayRef Int );
use MooseX::ClassAttribute;
use namespace::autoclean;

=head1 Class Attributes

=head2 _fields

The B<_fields> attribute is required by the IO roles to determine
which fields are to be read or written.  In this case, the fields
are C<chr>, C<start>, C<end>, C<ref>, and C<alt>, which are described
as attributes below.

lib/BoutrosLab/TSVStream/Format/AnnovarInput/Role.pm  view on Meta::CPAN

Like the two subroles above, the addition or absense of 'NoChr'
in the role name controls whether the value is coerced to have,
or not have, a leading 'chr' string.  (See the previous section.)

=cut

package BoutrosLab::TSVStream::Format::AnnovarInput::Role::Human;

use Moose::Role;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw(AI_ChrHumanWithChr);
use namespace::autoclean;

has 'chr' => (
	is       => 'ro',
	isa      => AI_ChrHumanWithChr,
	coerce   => 1,
	required => 1
	);


package BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanNoChr;

use Moose::Role;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw(AI_ChrHumanNoChr);
use namespace::autoclean;

has 'chr' => (
	is       => 'ro',
	isa      => AI_ChrHumanNoChr,
	coerce   => 1,
	required => 1
	);


package BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTag;

use Moose::Role;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw(AI_ChrHumanTagWithChr);
use namespace::autoclean;

has 'chr' => (
	is       => 'ro',
	isa      => AI_ChrHumanTagWithChr,
	coerce   => 1,
	required => 1
	);


package BoutrosLab::TSVStream::Format::AnnovarInput::Role::HumanTagNoChr;

use Moose::Role;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw(AI_ChrHumanTagNoChr);
use namespace::autoclean;

has 'chr' => (
	is       => 'ro',
	isa      => AI_ChrHumanTagNoChr,
	coerce   => 1,
	required => 1
	);


=head1 SEE ALSO

lib/BoutrosLab/TSVStream/Format/None/Dyn.pm  view on Meta::CPAN

package BoutrosLab::TSVStream::Format::None::Dyn;

# safe Perl
use warnings;
use strict;
use Carp;
use BoutrosLab::TSVStream::IO::Role::Dyn;


use Moose;
use namespace::autoclean;
use MooseX::ClassAttribute;

class_has '_fields' => (
	is => 'ro',
	isa => 'ArrayRef',
	default => sub { [ ] }
);

with 'BoutrosLab::TSVStream::IO::Role::Dyn';

lib/BoutrosLab/TSVStream/Format/VCF/AsAnnovarInputChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputChr::Dyn;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/AsAnnovarInputChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputChr::Fixed;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/AsAnnovarInputNoChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputNoChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputNoChr::Dyn;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputNoChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/AsAnnovarInputNoChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputNoChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::VCF::AsAnnovarInputNoChr::Fixed;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputNoChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

# __PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::Dyn

=cut

package BoutrosLab::TSVStream::Format::VCF::Dyn;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::Fixed

=cut

package BoutrosLab::TSVStream::Format::VCF::Fixed;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/FullChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::FullChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::VCF::FullChr::Dyn;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::FullChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/FullChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::FullChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::VCF::FullChr::Fixed;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::FullChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/FullNoChr/Dyn.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::FullNoChr::Dyn

=cut

package BoutrosLab::TSVStream::Format::VCF::FullNoChr::Dyn;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::FullNoChr
	BoutrosLab::TSVStream::IO::Role::Dyn
	);

__PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/FullNoChr/Fixed.pm  view on Meta::CPAN


=head1 NAME

    BoutrosLab::TSVStream::Format::VCF::FullNoChr::Fixed

=cut

package BoutrosLab::TSVStream::Format::VCF::FullNoChr::Fixed;

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::Format::VCF::Role;

with qw(
	BoutrosLab::TSVStream::Format::VCF::Role::FullNoChr
	BoutrosLab::TSVStream::IO::Role::Fixed
	);

# __PACKAGE__->meta->make_immutable;

lib/BoutrosLab/TSVStream/Format/VCF/Role.pm  view on Meta::CPAN

See BoutrosLab::TSVStream::Format::Human::Fixed for an example.

=cut

package BoutrosLab::TSVStream::Format::VCF::Role::Base;

use Moose::Role;
use BoutrosLab::TSVStream::Format::VCF::Types qw( VCF_Chrom VCF_Ref Str_No_Whitespace VCF_KV_Str );
use MooseX::Types::Moose qw( ArrayRef HashRef Int );
use MooseX::ClassAttribute;
use namespace::autoclean;

=head1 Class Attributes

=head2 _fields

The B<_fields> attribute is required by the IO roles to determine
which fields are to be read or written.  In this case, the fields
are C<chrom>, C<start>, C<end>, C<ref>, and C<alt>, which are described
as attributes below.

lib/BoutrosLab/TSVStream/Format/VCF/Role.pm  view on Meta::CPAN

=head3 chr

The B<chr> attribute is the B<chrom> attribute with a leading 'chr'
string either forced or removed.

=cut

package BoutrosLab::TSVStream::Format::VCF::Role::Full;

use Moose::Role;
use namespace::autoclean;
use BoutrosLab::TSVStream::Format::VCF::Types qw( VCF_Ref_Full VCF_Alt_Full );

has 'ref' => ( is => 'rw', isa => VCF_Ref_Full );
has 'alt' => ( is => 'rw', isa => VCF_Alt_Full );

package BoutrosLab::TSVStream::Format::VCF::Role::RecSNV;

use Moose::Role;
use namespace::autoclean;
use BoutrosLab::TSVStream::Format::VCF::Types qw( VCF_Ref VCF_Alt );

has 'ref' => ( is => 'rw', isa => VCF_Ref );
has 'alt' => ( is => 'rw', isa => VCF_Alt );

package BoutrosLab::TSVStream::Format::VCF::Role::WithChr;

use Carp qw(croak);

use Moose::Role;
use namespace::autoclean;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw( AI_ChrHumanTagWithChr );

sub chr {
	my $self = shift;
	my $chrom = my $chr = $self->chrom;
	if ($chr =~ /^chr/i) {
		$chr =~ s/^chr/chr/i;
	}
	else {
		$chr = "chr$chr";

lib/BoutrosLab/TSVStream/Format/VCF/Role.pm  view on Meta::CPAN

	croak( "chrom ($chrom) failed to convert to AnnovarInput chr" )
		unless is_AI_ChrHumanTagWithChr($chr);
	return to_AI_ChrHumanTagWithChr($chr);
}

package BoutrosLab::TSVStream::Format::VCF::Role::WithNoChr;

use Carp qw(croak);

use Moose::Role;
use namespace::autoclean;
use BoutrosLab::TSVStream::Format::AnnovarInput::Types qw( AI_ChrHumanTagNoChr );

sub chr {
	my $self = shift;
	my $chrom = my $chr = $self->chrom;
	$chr =~ s/^chr//i;
	croak( "chrom ($chrom) failed to convert to AnnovarInput chr" )
		unless is_AI_ChrHumanTagNoChr($chr);
	return to_AI_ChrHumanTagNoChr($chr);
}

package BoutrosLab::TSVStream::Format::VCF::Role::FullChr;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role::Base',
	'BoutrosLab::TSVStream::Format::VCF::Role::Full',
	'BoutrosLab::TSVStream::Format::VCF::Role::WithChr';

package BoutrosLab::TSVStream::Format::VCF::Role::FullNoChr;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role::Base',
	'BoutrosLab::TSVStream::Format::VCF::Role::Full',
	'BoutrosLab::TSVStream::Format::VCF::Role::WithNoChr';

package BoutrosLab::TSVStream::Format::VCF::Role;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role::Base',
	'BoutrosLab::TSVStream::Format::VCF::Role::RecSNV';

package BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInput;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role';

sub start {
	my $self = shift;
	return $self->pos;
}

sub end {
	my $self = shift;
	return $self->pos + length($self->ref) - 1;
}

package BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputChr;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInput',
	'BoutrosLab::TSVStream::Format::VCF::Role::WithChr';

package BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInputNoChr;

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::Format::VCF::Role::AsAnnovarInput',
	'BoutrosLab::TSVStream::Format::VCF::Role::WithNoChr';

=head1 SEE ALSO

=over

=item BoutrosLab::TSVStream::Format

lib/BoutrosLab/TSVStream/IO/Reader/Dyn.pm  view on Meta::CPAN

use strict;
use Carp;

=head1 NAME

    BoutrosLab::TSVStream:IO::Reader::Dyn

=cut

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::IO::Role::Base::Dyn;
use BoutrosLab::TSVStream::IO::Role::Reader::Dyn;

with 'BoutrosLab::TSVStream::IO::Role::Base::Dyn',
	'BoutrosLab::TSVStream::IO::Role::Reader::Dyn';

__PACKAGE__->meta->make_immutable;

=head1 SYNOPSIS

lib/BoutrosLab/TSVStream/IO/Reader/Fixed.pm  view on Meta::CPAN

use strict;
use Carp;

=head1 NAME

    BoutrosLab::TSVStream:IO::Reader::Fixed

=cut

use Moose;
use namespace::autoclean;

use BoutrosLab::TSVStream::IO::Role::Base::Fixed;
use BoutrosLab::TSVStream::IO::Role::Reader::Fixed;

with 'BoutrosLab::TSVStream::IO::Role::Base::Fixed',
	'BoutrosLab::TSVStream::IO::Role::Reader::Fixed';

__PACKAGE__->meta->make_immutable;

=head1 SYNOPSIS

lib/BoutrosLab/TSVStream/IO/Role/Base/Dyn.pm  view on Meta::CPAN


package BoutrosLab::TSVStream::IO::Role::Base::Dyn;

# safe Perl
use warnings;
use strict;
use Carp;

use Moose::Role;
use BoutrosLab::TSVStream::IO::Role::Base::Fixed;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::IO::Role::Base::Fixed';

# Base role for all Dynamic reader/writer variants

has dyn_fields => (
	is      => 'ro',
	isa       => 'ArrayRef[Str]',
	predicate => '_has_dyn_fields',
	writer => '_set_dyn_fields',

lib/BoutrosLab/TSVStream/IO/Role/Base/Fixed.pm  view on Meta::CPAN


package BoutrosLab::TSVStream::IO::Role::Base::Fixed;

# safe Perl
use warnings;
use strict;
use Carp;
use feature 'say';

use Moose::Role;
use namespace::autoclean;
use Try::Tiny;

# Base role for all reader/writer variants
#
# The BUILDARGS wrapper checks wheter a handle was proveded
# and, if not, opens the file provided and sets the handle
# to that newly opened fd.
#
# The class that consumes this role can add two extra entries
# to the arg list:

lib/BoutrosLab/TSVStream/IO/Role/Dyn.pm  view on Meta::CPAN

package BoutrosLab::TSVStream::IO::Role::Dyn;

# safe Perl
use warnings;
use strict;
use Carp;

use Moose::Role;
use namespace::autoclean;

use BoutrosLab::TSVStream::IO::Reader::Dyn;
use BoutrosLab::TSVStream::IO::Writer::Dyn;

with 'BoutrosLab::TSVStream::IO::Role::Fixed';

=head1 NAME

    BoutrosLab::TSVStreamDyn::IO::Role::Dyn

lib/BoutrosLab/TSVStream/IO/Role/Fixed.pm  view on Meta::CPAN

package BoutrosLab::TSVStream::IO::Role::Fixed;

# safe Perl
use warnings;
use strict;
use Carp;

use Moose::Role;
use namespace::autoclean;

use Moose::Util qw(find_meta);

use BoutrosLab::TSVStream::IO::Reader::Fixed;
use BoutrosLab::TSVStream::IO::Writer::Fixed;

=head1 NAME

    BoutrosLab::TSVStream::IO::Role::Fixed

lib/BoutrosLab/TSVStream/IO/Role/Reader/Dyn.pm  view on Meta::CPAN

use strict;
use Carp;

=head1 NAME

    BoutrosLab::TSVStream:IO::Role::Reader::Dyn

=cut

use Moose::Role;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::IO::Role::Reader::Fixed';

sub _read_no_header {
	my $self = shift;
	my $none = $self->header eq 'none';
	( $none, ($none && $self->_has_dyn_fields) );
	}

sub _fill_dyn_fields {

lib/BoutrosLab/TSVStream/IO/Role/Reader/Fixed.pm  view on Meta::CPAN

use Carp;

=head1 NAME

    BoutrosLab::TSVStream::IO::Role::Reader::Fixed

=cut

use Moose::Role;
use Moose::Util::TypeConstraints;
use namespace::autoclean;
use List::MoreUtils qw(all);

enum 'ReadHeaderType', [qw(auto none check)];

has header => (
	is      => 'ro',
	lazy    => 1,
	isa     => 'ReadHeaderType',
	default => 'auto'
	);

lib/BoutrosLab/TSVStream/IO/Role/Writer/Dyn.pm  view on Meta::CPAN

use BoutrosLab::TSVStream::IO::Role::Writer::Fixed;

=head1 NAME

    BoutrosLab::TSVStream:Writer

=cut

use Moose::Role;
use Moose::Util::TypeConstraints;
use namespace::autoclean;

with 'BoutrosLab::TSVStream::IO::Role::Writer::Fixed' => { -excludes => '_list_headers' };

sub _list_headers {
	my $self = shift;
	return ( [ @{ $self->fields }, @{ $self->dyn_fields } ] );
	}

=head1 SYNOPSIS



( run in 0.364 second using v1.01-cache-2.11-cpan-4d50c553e7e )