/usr/share/perl5/MouseX/Getopt/OptionTypeMap.pm is in libmousex-getopt-perl 0.37-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | package MouseX::Getopt::OptionTypeMap;
# ABSTRACT: Storage for the option to type mappings
use Mouse 'confess', 'blessed';
use Mouse::Util::TypeConstraints 'find_type_constraint';
my %option_type_map = (
'Bool' => '!',
'Str' => '=s',
'Int' => '=i',
'Num' => '=f',
'ArrayRef' => '=s@',
'HashRef' => '=s%',
);
sub has_option_type {
my (undef, $type_or_name) = @_;
return 1 if exists $option_type_map{blessed($type_or_name) ? $type_or_name->name : $type_or_name};
my $current = blessed($type_or_name) ? $type_or_name : find_type_constraint($type_or_name);
(defined $current)
|| confess "Could not find the type constraint for '$type_or_name'";
while (my $parent = $current->parent) {
return 1 if exists $option_type_map{$parent->name};
$current = $parent;
}
return 0;
}
sub get_option_type {
my (undef, $type_or_name) = @_;
my $name = blessed($type_or_name) ? $type_or_name->name : $type_or_name;
return $option_type_map{$name} if exists $option_type_map{$name};
my $current = ref $type_or_name ? $type_or_name : find_type_constraint($type_or_name);
(defined $current)
|| confess "Could not find the type constraint for '$type_or_name'";
while ( $current = $current->parent ) {
return $option_type_map{$current->name}
if exists $option_type_map{$current->name};
}
return;
}
sub add_option_type_to_map {
my (undef, $type_name, $option_string) = @_;
(defined $type_name && defined $option_string)
|| confess "You must supply both a type name and an option string";
if ( blessed($type_name) ) {
$type_name = $type_name->name;
} else {
(find_type_constraint($type_name))
|| confess "The type constraint '$type_name' does not exist";
}
$option_type_map{$type_name} = $option_string;
}
no Mouse::Util::TypeConstraints;
no Mouse;
1;
=head1 NAME
MouseX::Getopt::OptionTypeMap - Storage for the option to type mappings
=head1 DESCRIPTION
See the I<Custom Type Constraints> section in the L<MouseX::Getopt> docs
for more info about how to use this module.
=over 4
=item B<has_option_type ($type_or_name)>
=item B<get_option_type ($type_or_name)>
=item B<add_option_type_to_map ($type_name, $option_spec)>
=back
=cut
|