distro work
[p5sagit/Config-Any.git] / lib / Config / Any / INI.pm
index 3b92c5b..a8ec52f 100644 (file)
-package Config::Any::INI;\r
-\r
-use strict;\r
-use warnings;\r
-\r
-our $MAP_SECTION_SPACE_TO_NESTED_KEY = 1;\r
-\r
-=head1 NAME\r
-\r
-Config::Any::INI - Load INI config files\r
-\r
-=head1 DESCRIPTION\r
-\r
-Loads INI files. Example:\r
-\r
-    name=TestApp\r
-    \r
-    [Controller::Foo]\r
-    foo=bar\r
-    \r
-    [Model::Baz]\r
-    qux=xyzzy\r
-\r
-=head1 METHODS\r
-\r
-=head2 extensions( )\r
-\r
-return an array of valid extensions (C<ini>).\r
-\r
-=cut\r
-\r
-sub extensions {\r
-    return qw( ini );\r
-}\r
-\r
-=head2 load( $file )\r
-\r
-Attempts to load C<$file> as an INI file.\r
-\r
-=cut\r
-\r
-sub load {\r
-    my $class = shift;\r
-    my $file  = shift;\r
-\r
-    require Config::Tiny;\r
-    my $config = Config::Tiny->read( $file );\r
-\r
-    my $main   = delete $config->{ _ };\r
-       my $out;\r
-       $out->{$_} = $main->{$_} for keys %$main;\r
-\r
-       for my $k (keys %$config) {\r
-               my @keys = split /\s+/, $k if $MAP_SECTION_SPACE_TO_NESTED_KEY;\r
-               my $ref = $config->{$k};\r
-\r
-               if (@keys > 1) {\r
-                       my ($a, $b) = @keys[0,1];\r
-                       $out->{$a}->{$b} = $ref;\r
-               } else {\r
-                       $out->{$k} = $ref;\r
-               }\r
-       }\r
-    return $out;\r
-}\r
-\r
-=head1 PACKAGE VARIABLES\r
-\r
-=over 4\r
-\r
-=item $MAP_SECTION_SPACE_TO_NESTED_KEY (boolean)\r
-\r
-This variable controls whether spaces in INI section headings will be expanded into nested hash keys.\r
-e.g. it controls whether [Full Power] maps to $config->{'Full Power'} or $config->{'Full'}->{'Power'}\r
-\r
-By default it is set to 1 (i.e. true). \r
-\r
-Set it to 0 to preserve literal spaces in section headings:\r
-\r
-    use Config::Any;\r
-    use Config::Any::INI;\r
-    $Config::Any::INI::MAP_SECTION_SPACE_TO_NESTED_KEY = 0;\r
-\r
-=back\r
-\r
-=head1 AUTHOR\r
-\r
-=over 4 \r
-\r
-=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>\r
-\r
-=item * Joel Bernstein E<lt>rataxis@cpan.orgE<gt>\r
-\r
-=back\r
-\r
-=head1 COPYRIGHT AND LICENSE\r
-\r
-Copyright 2006 by Brian Cassidy, portions copyright 2006, 2007 by Joel Bernstein\r
-\r
-This library is free software; you can redistribute it and/or modify\r
-it under the same terms as Perl itself. \r
-\r
-=head1 SEE ALSO\r
-\r
-=over 4 \r
-\r
-=item * L<Catalyst>\r
-\r
-=item * L<Config::Any>\r
-\r
-=item * L<Config::Tiny>\r
-\r
-=back\r
-\r
-=cut\r
-\r
-1;\r
+package Config::Any::INI;
+
+use strict;
+use warnings;
+
+our $MAP_SECTION_SPACE_TO_NESTED_KEY = 1;
+
+=head1 NAME
+
+Config::Any::INI - Load INI config files
+
+=head1 DESCRIPTION
+
+Loads INI files. Example:
+
+    name=TestApp
+    
+    [Controller::Foo]
+    foo=bar
+    
+    [Model::Baz]
+    qux=xyzzy
+
+=head1 METHODS
+
+=head2 extensions( )
+
+return an array of valid extensions (C<ini>).
+
+=cut
+
+sub extensions {
+    return qw( ini );
+}
+
+=head2 load( $file )
+
+Attempts to load C<$file> as an INI file.
+
+=cut
+
+sub load {
+    my $class = shift;
+    my $file  = shift;
+
+    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;
+        }
+    }
+    return $out;
+}
+
+=head1 PACKAGE VARIABLES
+
+=over 4
+
+=item $MAP_SECTION_SPACE_TO_NESTED_KEY (boolean)
+
+This variable controls whether spaces in INI section headings will be expanded into nested hash keys.
+e.g. it controls whether [Full Power] maps to $config->{'Full Power'} or $config->{'Full'}->{'Power'}
+
+By default it is set to 1 (i.e. true). 
+
+Set it to 0 to preserve literal spaces in section headings:
+
+    use Config::Any;
+    use Config::Any::INI;
+    $Config::Any::INI::MAP_SECTION_SPACE_TO_NESTED_KEY = 0;
+
+=back
+
+=head1 AUTHOR
+
+=over 4 
+
+=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>
+
+=item * Joel Bernstein E<lt>rataxis@cpan.orgE<gt>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2006 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. 
+
+=head1 SEE ALSO
+
+=over 4 
+
+=item * L<Catalyst>
+
+=item * L<Config::Any>
+
+=item * L<Config::Tiny>
+
+=back
+
+=cut
+
+1;