diff --git a/lib/PDL/Graphics/Gnuplot.pm b/lib/PDL/Graphics/Gnuplot.pm index 74108ba..157e43e 100644 --- a/lib/PDL/Graphics/Gnuplot.pm +++ b/lib/PDL/Graphics/Gnuplot.pm @@ -5562,50 +5562,44 @@ our $footicsAbbrevs = _gen_abbrev_list(qw/axis border mirror in out scale rotate $_pOHInputs = { ## Simple cases - boolean, number, scalar - 'b' => sub { ( (defined $_[1]) ? ($_[1] ? 1 : 0) : undef ); }, - 'n' => sub { ( (defined $_[1]) ? ($_[1] + 0) : undef ); }, - 's' => sub { ( (defined $_[1]) ? "$_[1]" : undef ); }, + b => sub {return $_[1] if !defined $_[1]; $_[1] ? 1 : 0 }, + n => sub {return $_[1] if !defined $_[1]; $_[1] + 0 }, + s => sub {return $_[1] if !defined $_[1]; "$_[1]" }, ## one-line list (can also be boolean) - 'l' => sub { return undef unless(defined $_[1]); - return "" unless(length($_[1])); # false value yields false + l => sub { return $_[1] if !defined $_[1] or !length $_[1] or ref $_[1] eq 'ARRAY'; return [$_[1]] if( (!ref($_[1])) && "$_[1]" =~ m/^\s*\-?\d+\s*$/); # nonzero integers yield true # Not setting a boolean value - it's a list (or a trivial list). - return $_[1] if ref $_[1] eq 'ARRAY'; # anything that's not an array ref (and not a number) gets put in the array return [$_[1]]; }, ## one-line list (no booleanity: scalars always get copied to the list) - 'ln' => sub { return undef unless(defined $_[1]); - return "" unless(length($_[1])); - return [$_[1]] unless(ref($_[1]) eq 'ARRAY'); - return $_[1]; + ln => sub { return $_[1] if !defined $_[1] or !length $_[1] or ref $_[1] eq 'ARRAY'; + return [$_[1]]; }, ## one-line list (can also be boolean or hash) - 'lh' => sub { return undef unless(defined $_[1]); - return "" unless(length($_[1])); # false value yields false - return $_[1] if( (!ref($_[1])) && "$_[1]" =~ m/^\s*\-?\d+\s*$/); # nonzero integers yield true + lh => sub { return $_[1] if !defined $_[1] or !length $_[1] + or ref $_[1] eq 'ARRAY' or ref $_[1] eq 'HASH' + or ((!ref($_[1])) && "$_[1]" =~ m/^\s*\-?\d+\s*$/); # nonzero integers yield true # Not setting a boolean value - it's a list (or a trivial list). - return $_[1] if ref $_[1] eq 'ARRAY' or ref $_[1] eq 'HASH'; return [$_[1]]; - }, + }, ## list or 2-PDL for a range parameter - 'lr' => sub { return undef unless(defined $_[1]); - return "" unless(length($_[1])); # false value yields false - return $_[1] if( (!ref($_[1])) && "$_[1]" =~ m/^\s*\-?\d+\s*$/); # nonzero integers yield true - # Not setting a boolean value - it's a list (or a trivial list). - return $_[1] if ref $_[1] eq 'ARRAY'; + lr => sub { return $_[1] if !defined $_[1] or !length $_[1] + or ((!ref($_[1])) && "$_[1]" =~ m/^\s*\-?\d+\s*$/) # nonzero integers yield true + # Not setting a boolean value - it's a list (or a trivial list). + or ref $_[1] eq 'ARRAY'; return [$_[1]] if !$_[1]->$_isa('PDL'); barf "PDL::Graphics::Gnuplot: range parser found a PDL, but it wasn't a 2-PDL (max,min)" unless( $_[1]->dims==1 and $_[1]->nelem==2 ); return [$_[1]->list]; - }, + }, ## cumulative list (delete on "undef") - 'C' => sub { return undef unless(defined $_[1]); + C => sub { return $_[1] if !defined $_[1]; return 0 unless($_[1]); # false value yields false return 1 if( $_[1] && "$_[1]" =~ m/^\s*-?\d+\s*$/); # nonzero integers yield true # Not setting a boolean value - it's a list, so append it. @@ -5615,10 +5609,9 @@ $_pOHInputs = { }, ## set hash values - 'H' => sub { return undef unless(defined $_[1]); + H => sub { return $_[1] if !defined $_[1]; my $out = (ref $_[0] eq 'HASH') ? $_[0] : {}; my $in = $_[1]; - return undef unless defined($in); if(ref($in) eq 'ARRAY') { my %h = (@$in); $in = \%h; @@ -5644,8 +5637,8 @@ $_pOHInputs = { ## number-indexed list ## - 'N' => sub { my($old,$new,$h) = @_; - return undef unless(defined $new); + N => sub { my($old,$new,$h) = @_; + return $_[1] if !defined $_[1]; my $out = (ref($old) eq 'ARRAY') ? $old : []; # Split strings into lists if necessary. @@ -5680,8 +5673,8 @@ $_pOHInputs = { ## tics option list ## (For valid hash keys, see footicsAbbrevs definition above) - 'lt' => sub { my($old, $new, $h, $fieldname) = @_; - return undef unless(defined($new)); + lt => sub { my($old, $new, $h, $fieldname) = @_; + return $_[1] if !defined $_[1]; return 0 unless($new); if (!ref($new) or ref($new) eq 'ARRAY') { my @list; @@ -5731,22 +5724,18 @@ $_pOHInputs = { }, ## dashtype option - 'dt' => sub { my($old, $new, $h, $fieldname) = @_; + dt => sub { my($old, $new, $h, $fieldname) = @_; if($gp_version < 5.0) { carp "WARNING: 'dashtype' is not supported by your <5.0 gnuplot. Ignoring...\n"; return $old; } - if(ref $new and ref $new ne 'ARRAY') { - barf "Error: dashtype curve option requires a scalar or an array ref"; - } + barf "Error: dashtype curve option requires a scalar or an array ref" + if ref $new and ref $new ne 'ARRAY'; return $new; - } - + }, }; - - ############################## # _emitOpts #