On Fri, 2008-04-25 at 03:45 -0700, James Keenan via RT wrote:
> > Other than having a Darwin case, how is it different than the pattern?
> The Darwin case is the difference.

Ah.

> >      my $platform = $os =~ /mswin32/i && $cc =~ /^gcc/i ? 'win32_gcc'   :
> >                     $os =~ /mswin32/i                   ? 'win32_other' :
> >                     $os =~ /darwin/i                    ? 'darwin'      :
> >                                                         ? 'default'     ;
> > 
> >      my $libs     = $args->{$platform} || $args->{default};
> 
> Does this not imply that in the 4 classes addressed in the patch, the
> user of this method would be required to supply a 'darwin' key-value
> pair even though that the value for that key would be identical with
> 'non_win32' (or 'default')?

No.  That's why the default key is called 'default', and why $libs is
set that way.

(Subtle note -- the || really wants to be //, but as I recall we're not
allowed to assume that // is there yet.)

>     $self->_add_to_libs( {
>         conf        => $conf,
>         osname      => $osname,
>         cc          => $cc,
>         win32_gcc   => '-lreadline',
>         win32_other => 'readline.lib',
>         darwin      => '-lreadline',
>         default     => '-lreadline',
>     } );

As I mentioned to Infinoid on IRC, I designed a real default case so
that any key can be missing, and it will just fall back to the default.
So in your example above, both the 'darwin' and 'win32_gcc' cases could
just be dropped.

> Do you think that the added generality of what is essentially an
> internal helper method would then offset the additional complexity in
> that method's interface?

Not more complex.  Simpler.  :-)


-'f


Reply via email to