X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=lib%2FConfig%2FAny%2FXML.pm;h=ca2d55b76ddc38c57efdaf09f1368f5e02bc7ce6;hp=d5221c5accc1b88f50fb944c7229f2fbacddb1c5;hb=11501cf7c7fd46e8723c2de165a00e2f8deefc72;hpb=7d9d28036aaa111bf0c346bc061fae6032be3422 diff --git a/lib/Config/Any/XML.pm b/lib/Config/Any/XML.pm index d5221c5..ca2d55b 100644 --- a/lib/Config/Any/XML.pm +++ b/lib/Config/Any/XML.pm @@ -45,45 +45,65 @@ sub load { my $args = shift || {}; require XML::Simple; - my $config = XML::Simple::XMLin( - $file, + my $config = XML::Simple::XMLin( + $file, ForceArray => [ qw( component model view controller ) ], %$args ); - return $class->_coerce($config); + return $class->_coerce( $config ); } sub _coerce { + # coerce the XML-parsed config into the correct format - my $class = shift; + my $class = shift; my $config = shift; my $out; - for my $k (keys %$config) { - my $ref = $config->{$k}; - my $name = ref $ref ? delete $ref->{name} : undef; - if (defined $name) { - $out->{$k}->{$name} = $ref; - } else { - $out->{$k} = $ref; + for my $k ( keys %$config ) { + my $ref = $config->{ $k }; + my $name = ref $ref ? delete $ref->{ name } : undef; + if ( defined $name ) { + $out->{ $k }->{ $name } = $ref; + } + else { + $out->{ $k } = $ref; } } $out; } -=head1 AUTHOR +=head2 is_supported( ) -=over 4 +Returns true if L is available. -=item * Brian Cassidy Ebricas@cpan.orgE +=cut -=item * Joel Bernstein Erataxis@cpan.orgE +sub is_supported { + eval { require XML::Simple; }; + return $@ ? 0 : 1; +} -=back +=head1 CAVEATS + +=head2 Strict Mode + +If, by some chance, L has already been loaded with the strict +flag turned on, then you will likely get errors as warnings will become +fatal exceptions and certain arguments to XMLin() will no longer be optional. + +See L for +more information. + +=head1 AUTHORS + +Brian Cassidy Ebricas@cpan.orgE + +Joel Bernstein Erataxis@cpan.orgE =head1 COPYRIGHT AND LICENSE -Copyright 2006 by Brian Cassidy +Copyright 2007 by Brian Cassidy This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.