App-Info
view release on metacpan or search on metacpan
lib/App/Info/Lib/Expat.pm view on Meta::CPAN
use strict;
use App::Info::Util;
use App::Info::Lib;
use vars qw(@ISA $VERSION);
@ISA = qw(App::Info::Lib);
$VERSION = '0.57';
my $u = App::Info::Util->new;
##############################################################################
=head1 INTERFACE
=head2 Constructor
=head3 new
my $expat = App::Info::Lib::Expat->new(@params);
Returns an App::Info::Lib::Expat object. See L<App::Info|App::Info> for a
complete description of argument parameters.
When called, C<new()> searches all of the paths returned by the
C<search_lib_dirs()> method for one of the files returned by the
C<search_lib_names()> method. If any of is found, then Expat is assumed to be
installed. Otherwise, most of the object methods will return C<undef>.
B<Events:>
=over 4
=item info
Searching for Expat libraries
=item confirm
Path to Expat library directory?
=item unknown
Path to Expat library directory?
=back
=cut
sub new {
# Construct the object.
my $self = shift->SUPER::new(@_);
# Find libexpat.
$self->info("Searching for Expat libraries");
my @libs = $self->search_lib_names;
my $cb = sub { $u->first_cat_dir(\@libs, $_) };
if (my $lexpat = $u->first_cat_dir(\@libs, $self->search_lib_dirs)) {
# We found libexpat. Confirm.
$self->{libexpat} =
$self->confirm( key => 'expat lib dir',
prompt => 'Path to Expat library directory?',
value => $lexpat,
callback => $cb,
error => 'No Expat libraries found in directory');
} else {
# Handle an unknown value.
$self->{libexpat} =
$self->unknown( key => 'expat lib dir',
prompt => 'Path to Expat library directory?',
callback => $cb,
error => 'No Expat libraries found in directory');
}
return $self;
}
##############################################################################
=head2 Class Method
=head3 key_name
my $key_name = App::Info::Lib::Expat->key_name;
Returns the unique key name that describes this class. The value returned is
the string "Expat".
=cut
sub key_name { 'Expat' }
##############################################################################
=head2 Object Methods
=head3 installed
print "Expat is ", ($expat->installed ? '' : 'not '),
"installed.\n";
Returns true if Expat is installed, and false if it is not.
App::Info::Lib::Expat determines whether Expat is installed based on the
presence or absence on the file system of one of the files searched for when
C<new()> constructed the object. If Expat does not appear to be installed,
then most of the other object methods will return empty values.
=cut
sub installed { $_[0]->{libexpat} ? 1 : undef }
##############################################################################
=head3 name
my $name = $expat->name;
Returns the name of the application. In this case, C<name()> simply returns
the string "Expat".
=cut
sub name { 'Expat' }
##############################################################################
=head3 version
Returns the full version number for Expat. App::Info::Lib::Expat attempts
parse the version number from the F<expat.h> file, if it exists.
( run in 0.822 second using v1.01-cache-2.11-cpan-6aa56a78535 )