Skip to content
Snippets Groups Projects
Commit 58b9dc56 authored by Andreas Kusalananda Kähäri's avatar Andreas Kusalananda Kähäri
Browse files

In new(): Make sure we know what we're testing for.

Also get rid of inconsistency pointed out by Michael S.
parent d7895e7d
No related branches found
No related tags found
No related merge requests found
...@@ -122,60 +122,66 @@ sub new { ...@@ -122,60 +122,66 @@ sub new {
my $self = $class->SUPER::new(@_); my $self = $class->SUPER::new(@_);
my ($name,$version, $top_level, $sequence_level, $default, $rank) = my ( $name, $version, $top_level, $sequence_level, $default, $rank ) =
rearrange(['NAME','VERSION','TOP_LEVEL', 'SEQUENCE_LEVEL', rearrange( [ 'NAME', 'VERSION',
'DEFAULT', 'RANK'], @_); 'TOP_LEVEL', 'SEQUENCE_LEVEL',
'DEFAULT', 'RANK' ],
@_ );
throw('The NAME argument is required') if(!$name); $version = '' if ( !defined($version) );
$version = '' if(!defined($version)); $top_level = ($top_level) ? 1 : 0;
$sequence_level = ($sequence_level) ? 1 : 0;
$top_level = ($top_level) ? 1 : 0; $default = ($default) ? 1 : 0;
$sequence_level = ($sequence_level) ? 1 : 0;
$default = ($default) ? 1 : 0;
$rank ||= 0; $rank ||= 0;
if($top_level) { if ( $top_level == 1 ) {
if($rank) { if ( $rank == 1 ) {
throw('RANK argument must be 0 if TOP_LEVEL is 1'); throw('RANK argument must be 0 if TOP_LEVEL is 1');
} }
if($name) { if ( defined($name) ) {
if($name ne 'toplevel') { if ( $name ne 'toplevel' ) {
throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1') throw('The NAME argument must be "toplevel" if TOP_LEVEL is 1');
} }
} else { } else {
$name = 'toplevel'; $name = 'toplevel';
} }
if($sequence_level) { if ( $sequence_level == 1 ) {
throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1"); throw("SEQUENCE_LEVEL argument must be 0 if TOP_LEVEL is 1");
} }
$default = 0; $default = 0;
} else { } else {
if(!$rank) {
throw("RANK argument must be non-zero if not toplevel CoordSystem"); if ( $rank == 0 ) {
throw("RANK argument must be non-zero unless TOP_LEVEL is 1");
} }
if($name eq 'toplevel') {
throw("Cannot name coord system 'toplevel' unless TOP_LEVEL is 1"); if ( !defined($name) ) {
throw('The NAME argument is required');
} elsif ( $name eq 'toplevel' ) {
throw( "Cannot name coord system 'toplevel' "
. "unless TOP_LEVEL is 1" );
} }
} }
if($rank !~ /^\d+$/) { if ( $rank !~ /^\d+$/ ) {
throw('The RANK argument must be a positive integer'); throw('The RANK argument must be a positive integer');
} }
$self->{'version'} = $version; $self->{'version'} = $version;
$self->{'name'} = $name; $self->{'name'} = $name;
$self->{'top_level'} = $top_level; $self->{'top_level'} = $top_level;
$self->{'sequence_level'} = $sequence_level; $self->{'sequence_level'} = $sequence_level;
$self->{'default'} = $default; $self->{'default'} = $default;
$self->{'rank'} = $rank; $self->{'rank'} = $rank;
return $self; return $self;
} } ## end sub new
=head2 name =head2 name
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment