App-Info
view release on metacpan or search on metacpan
lib/App/Info/Lib/Expat.pm view on Meta::CPAN
$get_version->($self) unless exists $self->{version};
# 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, $z) = /^(\d+)\.(\d+).(\d+)$/;
# Return false if we didn't get all three.
return unless $x and defined $y and defined $z;
# Save all three parts.
@{$self}{qw(major minor patch)} = ($x, $y, $z);
# Return true.
return 1;
};
$self->{version} = $self->unknown( key => 'expat version number',
callback => $chk_version);
}
return $self->{version};
}
##############################################################################
=head3 major_version
my $major_version = $expat->major_version;
Returns the Expat major version number. App::Info::Lib::Expat attempts to
parse the version number from the F<expat.h> file, if it exists. For example,
if C<version()> returns "1.95.2", then this method returns "1".
B<Events:>
=over 4
=item info
Searching for 'expat.h'
Searching for include directory
=item error
Cannot find include directory
Cannot find 'expat.h'
Failed to parse version from 'expat.h'
=item unknown
Enter a valid Expat include directory
Enter a valid Expat major version number
=back
=cut
# This code reference is used by major_version(), minor_version(), and
# patch_version() to validate a version number entered by a user.
my $is_int = sub { /^\d+$/ };
sub major_version {
my $self = shift;
return unless $self->{libexpat};
# Get data.
$get_version->($self) unless exists $self->{version};
# Handle an unknown value.
$self->{major} = $self->unknown( key => 'expat major version number',
callback => $is_int)
unless $self->{major};
return $self->{major};
}
##############################################################################
=head3 minor_version
my $minor_version = $expat->minor_version;
Returns the Expat minor version number. App::Info::Lib::Expat attempts to
parse the version number from the F<expat.h> file, if it exists. For example,
if C<version()> returns "1.95.2", then this method returns "95".
B<Events:>
=over 4
=item info
Searching for 'expat.h'
Searching for include directory
=item error
Cannot find include directory
Cannot find 'expat.h'
Failed to parse version from 'expat.h'
=item unknown
Enter a valid Expat include directory
Enter a valid Expat minor version number
=back
=cut
sub minor_version {
my $self = shift;
return unless $self->{libexpat};
# Get data.
lib/App/Info/Lib/Expat.pm view on Meta::CPAN
my $bin_dir = $expat->bin_dir;
Since Expat includes no binaries, this method always returns false.
=cut
sub bin_dir { return }
##############################################################################
=head3 executable
my $executable = $expat->executable;
Since Expat includes no executable program, this method always returns false.
=cut
sub executable { return }
##############################################################################
=head3 inc_dir
my $inc_dir = $expat->inc_dir;
Returns the directory path in which the file F<expat.h> was found.
App::Info::Lib::Expat searches for F<expat.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 Expat include 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 inc_dir {
my $self = shift;
return unless $self->{libexpat};
unless (exists $self->{inc_dir}) {
$self->info("Searching for include directory");
my @incs = $self->search_inc_names;
if (my $dir = $u->first_cat_dir(\@incs, $self->search_inc_dirs)) {
$self->{inc_dir} = $dir;
} else {
$self->error("Cannot find include directory");
my $cb = sub { $u->first_cat_dir(\@incs, $_) };
$self->{inc_dir} =
$self->unknown( key => 'explat inc dir',
callback => $cb,
error => "No expat include file found in " .
"directory");
}
}
return $self->{inc_dir};
}
##############################################################################
=head3 lib_dir
my $lib_dir = $expat->lib_dir;
Returns the directory path in which a Expat library was found. The files and
paths searched are as described for the L<"new"|new> constructor, as are
the events.
=cut
sub lib_dir { $_[0]->{libexpat} }
##############################################################################
=head3 so_lib_dir
my $so_lib_dir = $expat->so_lib_dir;
Returns the directory path in which a Expat shared object library was found.
It searches all of the paths in the C<libsdirs> and C<loclibpth> attributes
defined by the Perl L<Config|Config> module -- plus F</sw/lib> (for all you
Fink fans) -- for one of the following files:
=over
=item libexpat.so
=item libexpat.so.0
=item libexpat.so.0.0.1
=item libexpat.dylib
( run in 2.097 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )