BoutrosLab-TSVStream

 view release on metacpan or  search on metacpan

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

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

# safe Perl
use warnings;
use strict;
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'
	);

has extra_class_params => (
	is      => 'ro',
	isa     => 'ArrayRef[Str]',
	default => sub { [] }
	);

has pre_header_pattern => (
	is      => 'ro',
	isa     => 'Maybe[RegexpRef]',
	default => undef
	);

has _is_pre_header => (
	is       => 'ro',
	isa      => 'CodeRef',
	lazy     => 1,
	builder  => '_init_is_pre_header'
	);

sub _init_is_pre_header {
	my $self = shift;
	if (my $pat = $self->pre_header_pattern) {
		sub { $_[0] =~ /$pat/ }
		}
	else {
		$self->_is_comment
		}
	}

has pre_headers => (
	is       => 'ro',
	isa      => 'ArrayRef[Str]',
	init_arg => undef,
	default  => sub { [] }
	);

has _comments => (
	is       => 'ro',
	isa      => 'ArrayRef[Str]',
	init_arg => undef,
	writer  => '_set_comments',
	default  => sub { [] }
	);

around BUILDARGS => sub {
	my $orig  = shift;
	my $class = shift;
	my $arg = ref($_[0]) ? $_[0] : { @_ };



( run in 0.838 second using v1.01-cache-2.11-cpan-39bf76dae61 )