Getopt-Class
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Getopt/Class.pm view on Meta::CPAN
my $uri_class = exists( $def->{package} ) ? $def->{package} : 'URI';
return( $self->_set_get_uri( { field => $f, class => $uri_class }, @_ ) );
}
elsif( $def->{type} eq 'uri-array' )
{
my $uri_class = exists( $def->{package} ) ? $def->{package} : 'URI';
if( @_ )
{
my $arr = Module::Generic::Array->new;
foreach( @_ )
{
push( @$arr, $uri_class->new( $_ ) );
}
$self->{ $f } = $arr;
}
return( $self->_set_get_uri( { field => $f, class => $uri_class } ) );
}
elsif( $def->{type} eq 'uri' )
{
return( $self->_set_get_uri( $f, @_ ) );
}
elsif( $def->{type} eq 'uri-array' )
{
if( @_ )
{
my $arr = Module::Generic::Array->new;
foreach( @_ )
{
push( @$arr, file( $_ ) );
}
$self->{ $f } = $arr;
}
return( $self->_set_get_array_as_object( $f ) );
}
else
{
CORE::warn( "I do not know what to do with this property \"$f\" type \"$def->{type}\". Using scalar.\n" ) if( $self->{warnings} );
return( $self->_set_get_scalar( $f, @_ ) );
}
};
# NOTE: Getopt::Class::Repository package
package Getopt::Class::Repository;
BEGIN
{
use strict;
use warnings;
use Scalar::Util;
use Devel::Confess;
use constant VALUES_CLASS => 'Getopt::Class::Value';
};
# tie( %self, 'Getopt::Class::Repository' );
# Used by Getopt::Class::Values to ensure that whether the data are accessed as methods or as hash keys,
# in either way it returns the option data
# Actually option data are stored in the Getopt::Class::Values object data property
sub TIEHASH
{
my $self = shift( @_ );
my $class = ref( $self ) || $self;
return( bless( { data => {} } => $class ) );
}
sub CLEAR
{
my $self = shift( @_ );
my $data = $self->{data};
my $caller = caller;
%$data = ();
}
sub DELETE
{
my $self = shift( @_ );
my $data = $self->{data};
my $key = shift( @_ );
if( caller eq VALUES_CLASS || !$self->{enable} )
{
CORE::delete( $self->{ $key } );
}
else
{
CORE::delete( $data->{ $key } );
}
}
sub EXISTS
{
my $self = shift( @_ );
my $data = $self->{data};
my $key = shift( @_ );
if( caller eq VALUES_CLASS || !$self->{enable} )
{
CORE::exists( $self->{ $key } );
}
else
{
CORE::exists( $data->{ $key } );
}
}
sub FETCH
{
my $self = shift( @_ );
my $data = $self->{data};
my $key = shift( @_ );
my $caller = caller;
# print( STDERR "FETCH($caller)[enable=$self->{enable}] <- '$key''\n" );
if( caller eq VALUES_CLASS || !$self->{enable} )
{
# print( STDERR "FETCH($caller)[enable=$self->{enable}] <- '$key' <- '$self->{$key}'\n" );
return( $self->{ $key } )
}
else
{
# print( STDERR "FETCH($caller)[enable=$self->{enable}] <- '$key' <- '$self->{$key}'\n" );
return( $data->{ $key } );
}
}
sub FIRSTKEY
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.718 second using v1.00-cache-2.02-grep-82fe00e-cpan-503542c4f10 )