X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FINI.pm;h=e0d72152df3a86f978d40a326c09380b6edba32f;hp=a8ec52f299b0bc1da6d92227502320bb33342f7a;hb=5770ffc01feb6998b8a7e23d66b52d33e4a62b35;hpb=f0e3c2214342d0d8a8839009b8b9c7e6bfbc7ab2 diff --git a/lib/Config/Any/INI.pm b/lib/Config/Any/INI.pm index a8ec52f..e0d7215 100644 --- a/lib/Config/Any/INI.pm +++ b/lib/Config/Any/INI.pm @@ -46,24 +46,37 @@ sub load { require Config::Tiny; my $config = Config::Tiny->read( $file ); - my $main = delete $config->{ _ }; - my $out; - $out->{$_} = $main->{$_} for keys %$main; - - for my $k (keys %$config) { - my @keys = split /\s+/, $k if $MAP_SECTION_SPACE_TO_NESTED_KEY; - my $ref = $config->{$k}; - - if (@keys > 1) { - my ($a, $b) = @keys[0,1]; - $out->{$a}->{$b} = $ref; - } else { - $out->{$k} = $ref; + die $Config::Tiny::errstr if not defined $config; + + my $out = delete $config->{ _ } || {}; + + for my $k ( keys %$config ) { + my @keys = split /\s+/, $k; + my $ref = $config->{ $k }; + + if ( $MAP_SECTION_SPACE_TO_NESTED_KEY && @keys > 1 ) { + my ( $a, $b ) = @keys[ 0, 1 ]; + $out->{ $a }->{ $b } = $ref; + } + else { + $out->{ $k } = { %{ $out->{ $k } || {} }, %$ref }; } } + return $out; } +=head2 is_supported( ) + +Returns true if L is available. + +=cut + +sub is_supported { + eval { require Config::Tiny; }; + return $@ ? 0 : 1; +} + =head1 PACKAGE VARIABLES =over 4 @@ -83,19 +96,15 @@ Set it to 0 to preserve literal spaces in section headings: =back -=head1 AUTHOR +=head1 AUTHORS -=over 4 +Brian Cassidy Ebricas@cpan.orgE -=item * Brian Cassidy Ebricas@cpan.orgE - -=item * Joel Bernstein Erataxis@cpan.orgE - -=back +Joel Bernstein Erataxis@cpan.orgE =head1 COPYRIGHT AND LICENSE -Copyright 2006 by Brian Cassidy, portions copyright 2006, 2007 by Joel Bernstein +Copyright 2007 by Brian Cassidy, portions copyright 2006, 2007 by Joel Bernstein This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.