/usr/local/CPAN/Prompt-ReadKey/Prompt/ReadKey/Util.pm
#!/usr/bin/perl
package Prompt::ReadKey::Util;
use strict;
use warnings;
use base qw(Exporter);
our @EXPORT = qw(_deref _get_arg _get_arg_or_default);
sub _deref ($) {
return unless @_;
my $ret = shift;
if ( wantarray and (ref($ret)||'') eq 'ARRAY' ) {
return @$ret;
} else {
return $ret;
}
}
sub _get_arg ($\%) {
my ( $name, $args ) = @_;
return unless exists $args->{$name};
_deref( $args->{$name} );
}
sub _get_arg_or_default {
my ( $self, $name, %args ) = @_;
if ( exists $args{$name} ) {
_get_arg($name, %args);
} else {
my $method = ( ( $name =~ m/^(?: prompt | options )$/x ) ? "default_$name" : $name );
if ( $self->can($method) ) {
return _deref($self->$method());
}
}
}
__PACKAGE__
__END__