fixed bug: [rt.cpan.org #25143] make tests fails
[p5sagit/Config-Any.git] / lib / Config / Any / INI.pm
CommitLineData
c80a0905 1package Config::Any::INI;\r
2\r
3use strict;\r
4use warnings;\r
5\r
41f47406 6our $MAP_SECTION_SPACE_TO_NESTED_KEY = 1;\r
7\r
c80a0905 8=head1 NAME\r
9\r
10Config::Any::INI - Load INI config files\r
11\r
12=head1 DESCRIPTION\r
13\r
14Loads INI files. Example:\r
15\r
16 name=TestApp\r
17 \r
18 [Controller::Foo]\r
19 foo=bar\r
20 \r
21 [Model::Baz]\r
22 qux=xyzzy\r
23\r
24=head1 METHODS\r
25\r
26=head2 extensions( )\r
27\r
28return an array of valid extensions (C<ini>).\r
29\r
30=cut\r
31\r
32sub extensions {\r
33 return qw( ini );\r
34}\r
35\r
36=head2 load( $file )\r
37\r
38Attempts to load C<$file> as an INI file.\r
39\r
40=cut\r
41\r
42sub load {\r
43 my $class = shift;\r
44 my $file = shift;\r
45\r
46 require Config::Tiny;\r
47 my $config = Config::Tiny->read( $file );\r
c80a0905 48\r
e967a60f 49 my $main = delete $config->{ _ };\r
50 my $out;\r
51 $out->{$_} = $main->{$_} for keys %$main;\r
52\r
53 for my $k (keys %$config) {\r
41f47406 54 my @keys = split /\s+/, $k if $MAP_SECTION_SPACE_TO_NESTED_KEY;\r
e967a60f 55 my $ref = $config->{$k};\r
56\r
57 if (@keys > 1) {\r
58 my ($a, $b) = @keys[0,1];\r
59 $out->{$a}->{$b} = $ref;\r
60 } else {\r
61 $out->{$k} = $ref;\r
62 }\r
63 }\r
64 return $out;\r
c80a0905 65}\r
66\r
41f47406 67=head1 PACKAGE VARIABLES\r
68\r
69=over 4\r
70\r
71=item $MAP_SECTION_SPACE_TO_NESTED_KEY (boolean)\r
72\r
73This variable controls whether spaces in INI section headings will be expanded into nested hash keys.\r
74e.g. it controls whether [Full Power] maps to $config->{'Full Power'} or $config->{'Full'}->{'Power'}\r
75\r
76By default it is set to 1 (i.e. true). \r
77\r
78Set it to 0 to preserve literal spaces in section headings:\r
79\r
80 use Config::Any;\r
81 use Config::Any::INI;\r
82 $Config::Any::INI::MAP_SECTION_SPACE_TO_NESTED_KEY = 0;\r
83\r
84=back\r
85\r
c80a0905 86=head1 AUTHOR\r
87\r
88=over 4 \r
89\r
90=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>\r
91\r
e967a60f 92=item * Joel Bernstein E<lt>rataxis@cpan.orgE<gt>\r
93\r
c80a0905 94=back\r
95\r
96=head1 COPYRIGHT AND LICENSE\r
97\r
41f47406 98Copyright 2006 by Brian Cassidy, portions copyright 2006, 2007 by Joel Bernstein\r
c80a0905 99\r
100This library is free software; you can redistribute it and/or modify\r
101it under the same terms as Perl itself. \r
102\r
103=head1 SEE ALSO\r
104\r
105=over 4 \r
106\r
107=item * L<Catalyst>\r
108\r
109=item * L<Config::Any>\r
110\r
111=item * L<Config::Tiny>\r
112\r
113=back\r
114\r
115=cut\r
116\r
e967a60f 1171;\r