Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/CommonGatewayInterface/Options.pm view on Meta::CPAN
package Ambrosia::CommonGatewayInterface::Options;
use strict;
use warnings;
use Getopt::Long::Descriptive 0.087;
use Ambrosia::Meta;
class sealed
{
extends => [qw/Ambrosia::CommonGatewayInterface/],
public => [qw/options_spec/],
};
our $VERSION = 0.010;
sub open
{
my $self = shift;
my ($opt, $usage) = describe_options(@{$self->options_spec});
$self->_handler = new Ambrosia::CommonGatewayInterface::Options::ICGI(
__opt => $opt, __usage => $usage
);
return $self->SUPER::open();
}
sub error
{
return $_[0]->_handler->usage()->text();
}
sub input_data
{
my $self = shift;
return $self->_handler->param(@_);
}
sub output_data
{
return '';
}
sub redirect
{}
1;
package Ambrosia::CommonGatewayInterface::Options::ICGI;
use Ambrosia::Meta;
class sealed
{
private => [qw/__opt __usage/],
};
sub param
{
my $self = shift;
if ( @_ )
{
my @res = map { eval { return $self->__opt->$_; } } @_;
return wantarray ? @res : $res[0];
}
else
{
return map { $_->{name} } @{$self->__usage->{options}};
}
}
sub usage
{
$_[0]->__usage;
}
1;
__END__
=head1 NAME
Ambrosia::CommonGatewayInterface::Options -
=head1 VERSION
( run in 2.591 seconds using v1.01-cache-2.11-cpan-302cb4679cc )