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=a43ac53e0f96196a68da6953c485fdfacb3ed30c;hp=d281e6058bc9e1ffa0fff2ce38bf3cae465170cb;hb=49ae658349471834b403cb322f11f97258fcd0ca;hpb=72628dc786ef43d546023d6f17a86c3f5edeb21a diff --git a/lib/Config/Any/INI.pm b/lib/Config/Any/INI.pm index d281e60..a43ac53 100644 --- a/lib/Config/Any/INI.pm +++ b/lib/Config/Any/INI.pm @@ -3,6 +3,8 @@ package Config::Any::INI; use strict; use warnings; +use base 'Config::Any::Base'; + our $MAP_SECTION_SPACE_TO_NESTED_KEY = 1; =head1 NAME @@ -46,35 +48,33 @@ sub load { require Config::Tiny; my $config = Config::Tiny->read( $file ); - my $main = delete $config->{ _ }; - my $out; - $out->{ $_ } = $main->{ $_ } for keys %$main; + die $Config::Tiny::errstr if not defined $config; + + my $out = delete $config->{ _ } || {}; for my $k ( keys %$config ) { - my @keys = split /\s+/, $k if $MAP_SECTION_SPACE_TO_NESTED_KEY; + my @keys = split /\s+/, $k; my $ref = $config->{ $k }; - if ( @keys > 1 ) { + if ( $MAP_SECTION_SPACE_TO_NESTED_KEY && @keys > 1 ) { my ( $a, $b ) = @keys[ 0, 1 ]; $out->{ $a }->{ $b } = $ref; } else { - $out->{ $k } = $ref; + $out->{ $k } = { %{ $out->{ $k } || {} }, %$ref }; } } + return $out; } -=head2 is_supported( ) +=head2 requires_all_of( ) -Returns true if L is available. +Specifies that this module requires L in order to work. =cut -sub is_supported { - eval { require Config::Tiny; }; - return $@ ? 0 : 1; -} +sub requires_all_of { 'Config::Tiny' } =head1 PACKAGE VARIABLES @@ -103,7 +103,7 @@ Joel Bernstein Erataxis@cpan.orgE =head1 COPYRIGHT AND LICENSE -Copyright 2007 by Brian Cassidy, portions copyright 2006, 2007 by Joel Bernstein +Copyright 2006-2009 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.