From 810d00595777f91fb81a404b5632e8fa8a69f1e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Kusalananda=20K=C3=A4h=C3=A4ri?=
 <ak4@sanger.ac.uk>
Date: Tue, 4 Jan 2011 15:34:52 +0000
Subject: [PATCH] Sort out formatting of add_Exon() and use assert_ref() too,
 before fixing problem reported by Mark McDowall.

---
 modules/Bio/EnsEMBL/Transcript.pm | 58 +++++++++++++++++--------------
 1 file changed, 31 insertions(+), 27 deletions(-)

diff --git a/modules/Bio/EnsEMBL/Transcript.pm b/modules/Bio/EnsEMBL/Transcript.pm
index b6bb691f86..47d8699cd4 100755
--- a/modules/Bio/EnsEMBL/Transcript.pm
+++ b/modules/Bio/EnsEMBL/Transcript.pm
@@ -1212,33 +1212,31 @@ sub add_Attributes {
 
 =cut
 
-sub add_Exon{
-  my ($self,$exon, $rank) = @_;
+sub add_Exon {
+  my ( $self, $exon, $rank ) = @_;
 
-  #yup - we are going to be picky here...
-  unless(defined $exon && ref $exon && $exon->isa("Bio::EnsEMBL::Exon") ) {
-    throw("[$exon] is not a Bio::EnsEMBL::Exon!");
-  }
+  assert_ref( $exon, 'Bio::EnsEMBL::Exon' );
 
   $self->{'_trans_exon_array'} ||= [];
 
-  if(defined($rank)) {
-    $self->{'_trans_exon_array'}->[$rank-1] = $exon;
+  if ( defined($rank) ) {
+    $self->{'_trans_exon_array'}->[ $rank - 1 ] = $exon;
     return;
   }
 
   my $was_added = 0;
 
   my $ea = $self->{'_trans_exon_array'};
-  if( @$ea ) {
-    if( $exon->strand() == 1 ) {
-      if( $exon->start() > $ea->[$#$ea]->end() ) {
-        push(@{$self->{'_trans_exon_array'}},$exon);
+
+  if ( @{$ea} ) {
+    if ( $exon->strand() == 1 ) {
+      if ( $exon->start() > $ea->[$#$ea]->end() ) {
+        push( @{ $self->{'_trans_exon_array'} }, $exon );
         $was_added = 1;
       } else {
         # insert it at correct place
-        for( my $i=0; $i <= $#$ea; $i++ ) {
-          if( $exon->end() < $ea->[$i]->start() ) {
+        for ( my $i = 0; $i <= $#$ea; $i++ ) {
+          if ( $exon->end() < $ea->[$i]->start() ) {
             splice( @$ea, $i, 0, $exon );
             $was_added = 1;
             last;
@@ -1246,13 +1244,13 @@ sub add_Exon{
         }
       }
     } else {
-      if( $exon->end() < $ea->[$#$ea]->start() ) {
-        push(@{$self->{'_trans_exon_array'}},$exon);
+      if ( $exon->end() < $ea->[$#$ea]->start() ) {
+        push( @{ $self->{'_trans_exon_array'} }, $exon );
         $was_added = 1;
       } else {
         # insert it at correct place
-        for( my $i=0; $i <= $#$ea; $i++ ) {
-          if( $exon->start() > $ea->[$i]->end() ) {
+        for ( my $i = 0; $i <= $#$ea; $i++ ) {
+          if ( $exon->start() > $ea->[$i]->end() ) {
             splice( @$ea, $i, 0, $exon );
             $was_added = 1;
             last;
@@ -1266,24 +1264,30 @@ sub add_Exon{
   }
 
   # sanity check:
-  if(!$was_added) {
+  if ( !$was_added ) {
     # exon was not added because it has same end coord as start
     # of another exon
     my $all_str = '';
     foreach my $e (@$ea) {
-      $all_str .= '  '.$e->start .'-'.$e->end.' ('.$e->strand.') ' .
-        ($e->stable_id || '') . "\n";
+      $all_str .= '  '
+        . $e->start() . '-'
+        . $e->end() . ' ('
+        . $e->strand() . ') '
+        . ( $e->stable_id() || '' ) . "\n";
     }
-    my $cur_str = '  '.$exon->start.'-'.$exon->end. ' ('.$exon->strand.') '.
-      ($exon->stable_id || '')."\n";
-    throw("Exon overlaps with other exon in same transcript.\n" .
-          "Transcript Exons:\n$all_str\n" .
-          "This Exon:\n$cur_str");
+    my $cur_str = '  '
+      . $exon->start() . '-'
+      . $exon->end() . ' ('
+      . $exon->strand() . ') '
+      . ( $exon->stable_id() || '' ) . "\n";
+    throw(   "Exon overlaps with other exon in same transcript.\n"
+           . "Transcript Exons:\n$all_str\n"
+           . "This Exon:\n$cur_str" );
   }
 
   # recalculate start, end, slice, strand
   $self->recalculate_coordinates();
-}
+} ## end sub add_Exon
 
 
 =head2 get_all_Exons
-- 
GitLab