X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FGeneral.pm;h=6aceb985bf4d236b5f7a0c8f8d6ce5df5019262d;hp=195148846ac6af12b9edf947f9ad2cbeb6f77d4e;hb=4198bf8c36c5f90c71845bd2505d953d3422037e;hpb=59a8045203653a6f6cbccc3c24eb3884fba40ddc
diff --git a/lib/Config/Any/General.pm b/lib/Config/Any/General.pm
index 1951488..6aceb98 100644
--- a/lib/Config/Any/General.pm
+++ b/lib/Config/Any/General.pm
@@ -1,108 +1,114 @@
-package Config::Any::General;
-
-use strict;
-use warnings;
-
-=head1 NAME
-
-Config::Any::General - Load Config::General files
-
-=head1 DESCRIPTION
-
-Loads Config::General files. Example:
-
- name = TestApp
-
- foo bar
-
-
- qux xyzzy
-
-
-=head1 METHODS
-
-=head2 extensions( )
-
-return an array of valid extensions (C, C).
-
-=cut
-
-sub extensions {
- return qw( cnf conf );
-}
-
-=head2 load( $file )
-
-Attempts to load C<$file> via Config::General.
-
-=cut
-
-sub load {
- my $class = shift;
- my $file = shift;
-
- # work around bug (?) in Config::General
- return if $class->_test_perl($file);
-
- require Config::General;
- my $configfile = Config::General->new( $file );
- my $config = { $configfile->getall };
-
- return $config;
-}
-
-# this is a bit of a hack but necessary, because Config::General is *far* too lax
-# about what it will load -- specifically, it seems to be quite happy to load a Perl
-# config file (ie, a file which is valid Perl and creates a hashref) as if it were
-# an Apache-style configuration file, presumably due to laziness on the part of the
-# developer.
-
-sub _test_perl {
- my ($class, $file) = @_;
- my $is_perl_src;
- eval { $is_perl_src = do "$file"; };
- delete $INC{$file}; # so we don't screw stuff later on
- return defined $is_perl_src;
-}
-
-=head1 AUTHOR
-
-=over 4
-
-=item * Brian Cassidy Ebricas@cpan.orgE
-
-=back
-
-=head1 CONTRIBUTORS
-
-=over 4
-
-=item * Joel Bernstein C<< >>
-
-=back
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2006 by Brian Cassidy
-
-Portions Copyright 2006 Portugal Telecom
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item * L
-
-=item * L
-
-=item * L
-
-=back
-
-=cut
-
-1;
-
+package Config::Any::General;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+Config::Any::General - Load Config::General files
+
+=head1 DESCRIPTION
+
+Loads Config::General files. Example:
+
+ name = TestApp
+
+ foo bar
+
+
+ qux xyzzy
+
+
+=head1 METHODS
+
+=head2 extensions( )
+
+return an array of valid extensions (C, C).
+
+=cut
+
+sub extensions {
+ return qw( cnf conf );
+}
+
+=head2 load( $file )
+
+Attempts to load C<$file> via Config::General.
+
+=cut
+
+sub load {
+ my $class = shift;
+ my $file = shift;
+ my $args = shift || {};
+
+ # work around bug (?) in Config::General
+ # return if $class->_test_perl($file);
+
+ $args->{ -ConfigFile } = $file;
+
+ require Config::General;
+ my $configfile = Config::General->new( %$args );
+ my $config = { $configfile->getall };
+
+ return $config;
+}
+
+# this is a bit of a hack but necessary, because Config::General is *far* too lax
+# about what it will load -- specifically, it seems to be quite happy to load a Perl
+# config file (ie, a file which is valid Perl and creates a hashref) as if it were
+# an Apache-style configuration file, presumably due to laziness on the part of the
+# developer.
+
+sub _test_perl {
+ my ( $class, $file ) = @_;
+ my $is_perl_src;
+ eval { $is_perl_src = do "$file"; };
+ delete $INC{ $file }; # so we don't screw stuff later on
+ return defined $is_perl_src;
+}
+
+=head2 is_supported( )
+
+Returns true if L is available.
+
+=cut
+
+sub is_supported {
+ eval { require Config::General; };
+ return $@ ? 0 : 1;
+}
+
+=head1 AUTHOR
+
+Brian Cassidy Ebricas@cpan.orgE
+
+=head1 CONTRIBUTORS
+
+Joel Bernstein C<< >>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2007 by Brian Cassidy
+
+Portions Copyright 2006 Portugal Telecom
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+=over 4
+
+=item * L
+
+=item * L
+
+=item * L
+
+=back
+
+=cut
+
+1;
+