BioPerl

 view release on metacpan or  search on metacpan

Bio/MapIO.pm  view on Meta::CPAN

rather than to the module maintainer directly. Many experienced and 
reponsive experts will be able look at the problem and quickly 
address it. Please include a thorough description of the problem 
with code and data examples if at all possible.

=head2 Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track
of the bugs and their resolution. Bug reports can be submitted the web:

  https://github.com/bioperl/bioperl-live/issues

=head1 AUTHOR - Jason Stajich

Email jason@bioperl.org

=head1 APPENDIX

The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _

=cut


# Let the code begin...


package Bio::MapIO;
use strict;


use base qw(Bio::Root::Root Bio::Root::IO Bio::Factory::MapFactoryI);

=head2 new

 Title   : new
 Usage   : my $obj = Bio::MapIO->new();
 Function: Builds a new Bio::MapIO object 
 Returns : Bio::MapIO
 Args    :


=cut

sub new {
  my($caller,@args) = @_;

  my $class = ref($caller) || $caller;
  
  # or do we want to call SUPER on an object if $caller is an
  # object?
  if( $class =~ /Bio::MapIO::(\S+)/ ) {
	my ($self) = $class->SUPER::new(@args);	
	$self->_initialize(@args);
	return $self;
    } else { 
	
	my %param = @args;
	@param{ map { lc $_ } keys %param } = values %param; # lowercase keys
	my $format = $param{'-format'} || 
	    $class->_guess_format( $param{'-file'} || $ARGV[0] ) ||
		'mapmaker';
	$format = "\L$format";	# normalize capitalization to lower case

	# normalize capitalization
	return unless( $class->_load_format_module($format) );
	return "Bio::MapIO::$format"->new(@args);
    }

}


=head2 format

 Title   : format
 Usage   : $format = $stream->format()
 Function: Get the map format
 Returns : map format
 Args    : none

=cut

# format() method inherited from Bio::Root::IO


=head2 Bio::Factory::MapFactoryI methods

=cut

=head2 next_map

 Title   : next_tree
 Usage   : my $map = $factory->next_map;
 Function: Get a map from the factory
 Returns : L<Bio::Map::MapI>
 Args    : none


=head2 write_map

 Title   : write_tree
 Usage   : $factory->write_map($map);
 Function: Write a map out through the factory
 Returns : none
 Args    : L<Bio::Map::MapI>

=cut


=head2 attach_EventHandler

 Title   : attach_EventHandler
 Usage   : $parser->attatch_EventHandler($handler)
 Function: Adds an event handler to listen for events
 Returns : none
 Args    : L<Bio::Event::EventHandlerI>

=cut

sub attach_EventHandler{
    my ($self,$handler) = @_;

Bio/MapIO.pm  view on Meta::CPAN

    $self->{'_handler'} = $handler;
    return;
}

=head2 _eventHandler

 Title   : _eventHandler
 Usage   : private
 Function: Get the EventHandler
 Returns : L<Bio::Event::EventHandlerI>
 Args    : none


=cut

sub _eventHandler{
   my ($self) = @_;
   return $self->{'_handler'};
}

sub _initialize {
    my($self, @args) = @_;
    $self->{'_handler'} = undef;
    
    # initialize the IO part
    $self->_initialize_io(@args);
#    $self->attach_EventHandler(Bio::MapIO::MapEventBuilder->new());
}

=head2 _load_format_module

 Title   : _load_format_module
 Usage   : *INTERNAL MapIO stuff*
 Function: Loads up (like use) a module at run time on demand
 Example :
 Returns :
 Args    :

=cut

sub _load_format_module {
  my ($self,$format) = @_;
  my $module = "Bio::MapIO::" . $format;
  my $ok;  
  eval {
      $ok = $self->_load_module($module);
  };
  if ( $@ ) {
    print STDERR <<END;
$self: $format cannot be found
Exception $@
For more information about the MapIO system please see the MapIO docs.
This includes ways of checking for formats at compile time, not run time
END
  ;
  }
  return $ok;
}


=head2 _guess_format

 Title   : _guess_format
 Usage   : $obj->_guess_format($filename)
 Function:
 Example :
 Returns : guessed format of filename (lower case)
 Args    :

=cut

sub _guess_format {
   my $class = shift;
   return unless $_ = shift;
   return 'mapmaker'   if /\.(map)$/i;
   return 'mapxml' if /\.(xml)$/i;
}

sub DESTROY {
    my $self = shift;

    $self->close();
}

1;



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