GenOO

 view release on metacpan or  search on metacpan

lib/GenOO/Data/File/FASTA/Record.pm  view on Meta::CPAN

# POD documentation - main docs before the code

=head1 NAME

GenOO::Data::File::FASTA::Record - Object representing a record of a fasta file

=head1 SYNOPSIS

    # Object representing a record of a fasta file 

    # To initialize 
    my $record = GenOO::Data::File::FASTA::Record->new({
        HEADER          => undef,
        SEQUENCE        => undef,
    });


=head1 DESCRIPTION

    This object represents a record of a fasta file and offers methods for accessing the different attributes.

=head1 EXAMPLES
    
    my $sequence = $record->sequence();
    
=cut

# Let the code begin...

package GenOO::Data::File::FASTA::Record;
$GenOO::Data::File::FASTA::Record::VERSION = '1.5.2';

#######################################################################
#######################   Load External modules   #####################
#######################################################################
use Modern::Perl;
use autodie;
use Moose;
use namespace::autoclean;


#######################################################################
#######################   Interface attributes   ######################
#######################################################################
has 'header' => (
	isa      => 'Str',
	is       => 'ro',
	required => 1
);

has 'sequence' => (
	isa      => 'Str',
	is       => 'ro',
	required => 1
);


#######################################################################
##############################   BUILD   ##############################
#######################################################################
around BUILDARGS => sub {
	my ($orig, $class) = @_;
	
	my $argv_hash_ref = $class->$orig(@_);
	
	if (exists $argv_hash_ref->{header}) {
		my $header = $argv_hash_ref->{header};
		$header =~ s/^>//;
		$argv_hash_ref->{header} = $header
	}
	
	return $argv_hash_ref;
};


#######################################################################
########################   Interface Methods   ########################
#######################################################################
sub length {
	my ($self) = @_;
	return length($self->sequence);
}

sub to_string {
	my ($self) = @_;
	
	return join("\n",(
		'>'.$self->header,
		$self->sequence,
	));
}

#######################################################################
############################   Finalize   #############################
#######################################################################
__PACKAGE__->meta->make_immutable;



( run in 1.233 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )