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=ee5be5c67a968332c683c615ea36a8e78b4f1a41;hp=42a83806f9d6d60f221cf98801452d7b24b2267b;hb=d7eb7b5ca6dd18e740943079a1585661cec4d81f;hpb=e967a60fa6fb5adeb6ead013b0b60289b2a92e2e
diff --git a/lib/Config/Any/XML.pm b/lib/Config/Any/XML.pm
index 42a8380..ee5be5c 100644
--- a/lib/Config/Any/XML.pm
+++ b/lib/Config/Any/XML.pm
@@ -1,104 +1,123 @@
-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;
-
- require XML::Simple;
- XML::Simple->import;
- my $config = XMLin(
- $file,
- ForceArray => [ qw( component model view controller ) ],
- );
-
- 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;
-}
-
-=head1 AUTHOR
-
-=over 4
-
-=item * Brian Cassidy Ebricas@cpan.orgE
-
-=item * Joel Bernstein Erataxis@cpan.orgE
-
-=back
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 2006 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;
+package Config::Any::XML;
+
+use strict;
+use warnings;
+
+use base 'Config::Any::Base';
+
+=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 eq 'HASH' ? delete $ref->{ name } : undef;
+ if ( defined $name ) {
+ $out->{ $k }->{ $name } = $ref;
+ }
+ else {
+ $out->{ $k } = $ref;
+ }
+ }
+ $out;
+}
+
+=head2 requires_all_of( )
+
+Specifies that this module requires L in order to work.
+
+=cut
+
+sub requires_all_of { 'XML::Simple' }
+
+=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-2011 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;