App-Info
view release on metacpan or search on metacpan
lib/App/Info/Lib/Iconv.pm view on Meta::CPAN
# Handle an unknown value.
unless ($self->{version}) {
# Create a validation code reference.
my $chk_version = sub {
# Try to get the version number parts.
my ($x, $y) = /^(\d+)\.(\d+)$/;
# Return false if we didn't get all three.
return unless $x and defined $y;
# Save both parts.
@{$self}{qw(major minor)} = ($x, $y);
# Return true.
return 1;
};
$self->{version} = $self->unknown( key => 'iconv version number',
callback => $chk_version);
}
return $self->{version};
}
##############################################################################
=head3 major_version
my $major_version = $iconv->major_version;
Returns the libiconv major version number. App::Info::Lib::Iconv attempts to
parse the version number from the F<iconv.h> file, if it exists. For example,
if C<version()> returns "1.7", then this method returns "1".
B<Events:>
=over 4
=item info
Searching for 'iconv.h'
Searching for include directory
=item error
Cannot find include directory
Cannot find 'iconv.h'
Cannot parse version number from file 'iconv.h'
=item unknown
Enter a valid libiconv include directory
Enter a valid libiconv version number
=back
=cut
# This code reference is used by major_version() and minor_version() to
# validate a version number entered by a user.
my $is_int = sub { /^\d+$/ };
sub major_version {
my $self = shift;
return unless $self->{executable};
# Get data.
$get_version->($self) unless exists $self->{version};
# Handle an unknown value.
$self->{major} = $self->unknown( key => 'iconv major version number',
callback => $is_int)
unless $self->{major};
return $self->{major};
}
##############################################################################
=head3 minor_version
my $minor_version = $iconv->minor_version;
Returns the libiconv minor version number. App::Info::Lib::Iconv attempts to
parse the version number from the F<iconv.h> file, if it exists. For example,
if C<version()> returns "1.7", then this method returns "7".
B<Events:>
=over 4
=item info
Searching for 'iconv.h'
Searching for include directory
=item error
Cannot find include directory
Cannot find 'iconv.h'
Cannot parse version number from file 'iconv.h'
=item unknown
Enter a valid libiconv include directory
Enter a valid libiconv version number
=back
=cut
sub minor_version {
my $self = shift;
return unless $self->{executable};
# Get data.
lib/App/Info/Lib/Iconv.pm view on Meta::CPAN
return $self->{minor};
}
##############################################################################
=head3 patch_version
my $patch_version = $iconv->patch_version;
Since libiconv has no patch number in its version number, this method will
always return false.
=cut
sub patch_version { return }
##############################################################################
=head3 executable
my $executable = $iconv->executable;
Returns the path to the Iconv executable, which will be defined by one of the
names returned by C<search_exe_names()>. The executable is searched for in
C<new()>, so there are no events for this method.
=cut
sub executable { shift->{executable} }
##############################################################################
=head3 bin_dir
my $bin_dir = $iconv->bin_dir;
Returns the path of the directory in which the F<iconv> application was found
when the object was constructed by C<new()>.
B<Events:>
=over 4
=item info
Searching for bin directory
=item error
Cannot find bin directory
=item unknown
Enter a valid libiconv bin directory
=back
=cut
# This code reference is used by inc_dir() and so_lib_dir() to validate a
# directory entered by the user.
my $is_dir = sub { -d };
sub bin_dir {
my $self = shift;
return unless $self->{executable};
unless (exists $self->{bin_dir}) {
# This is all probably redundant, but let's do the drill, anyway.
$self->info("Searching for bin directory");
if (my $bin = File::Basename::dirname($self->{executable})) {
# We found it!
$self->{bin_dir} = $bin;
} else {
$self->{bin_dir} = $self->unknown(
key => 'iconv bin dir',
callback => $is_dir
);
}
}
return $self->{bin_dir};
}
##############################################################################
=head3 inc_dir
my $inc_dir = $iconv->inc_dir;
Returns the directory path in which the file F<iconv.h> was found.
App::Info::Lib::Iconv searches for F<iconv.h> in the following directories:
=over 4
=item /usr/local/include
=item /usr/include
=item /sw/include
=back
B<Events:>
=over 4
=item info
Searching for include directory
=item error
Cannot find include directory
=item unknown
Enter a valid libiconv include directory
=back
=cut
( run in 3.493 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )