package Config::Any::XML;
use strict;
use warnings;
=head1 NAME
Config::Any::XML - Load XML config files
=head1 DESCRIPTION
Loads XML files. Example:
TestApp
bar
xyzzy
=head1 METHODS
=head2 extensions( )
return an array of valid extensions (C).
=cut
sub extensions {
return qw( xml );
}
=head2 load( $file )
Attempts to load C<$file> as an XML file.
=cut
sub load {
my $class = shift;
my $file = shift;
my $args = shift || {};
require XML::Simple;
my $config = XML::Simple::XMLin(
$file,
ForceArray => [ qw( component model view controller ) ],
%$args
);
return $class->_coerce( $config );
}
sub _coerce {
# coerce the XML-parsed config into the correct format
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;
}
}
$out;
}
=head2 is_supported( )
Returns true if L is available.
=cut
sub is_supported {
eval { require XML::Simple; };
return $@ ? 0 : 1;
}
=head1 AUTHORS
Brian Cassidy Ebricas@cpan.orgE
Joel Bernstein Erataxis@cpan.orgE
=head1 COPYRIGHT AND LICENSE
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.
=head1 SEE ALSO
=over 4
=item * L
=item * L
=item * L
=back
=cut
1;