MANIFEST update
[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
6=head1 NAME\r
7\r
8Config::Any::INI - Load INI config files\r
9\r
10=head1 DESCRIPTION\r
11\r
12Loads INI files. Example:\r
13\r
14 name=TestApp\r
15 \r
16 [Controller::Foo]\r
17 foo=bar\r
18 \r
19 [Model::Baz]\r
20 qux=xyzzy\r
21\r
22=head1 METHODS\r
23\r
24=head2 extensions( )\r
25\r
26return an array of valid extensions (C<ini>).\r
27\r
28=cut\r
29\r
30sub extensions {\r
31 return qw( ini );\r
32}\r
33\r
34=head2 load( $file )\r
35\r
36Attempts to load C<$file> as an INI file.\r
37\r
38=cut\r
39\r
40sub load {\r
41 my $class = shift;\r
42 my $file = shift;\r
43\r
44 require Config::Tiny;\r
45 my $config = Config::Tiny->read( $file );\r
c80a0905 46\r
e967a60f 47 my $main = delete $config->{ _ };\r
48 my $out;\r
49 $out->{$_} = $main->{$_} for keys %$main;\r
50\r
51 for my $k (keys %$config) {\r
52 my @keys = split /\s+/, $k;\r
53 my $ref = $config->{$k};\r
54\r
55 if (@keys > 1) {\r
56 my ($a, $b) = @keys[0,1];\r
57 $out->{$a}->{$b} = $ref;\r
58 } else {\r
59 $out->{$k} = $ref;\r
60 }\r
61 }\r
62 return $out;\r
c80a0905 63}\r
64\r
65=head1 AUTHOR\r
66\r
67=over 4 \r
68\r
69=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>\r
70\r
e967a60f 71=item * Joel Bernstein E<lt>rataxis@cpan.orgE<gt>\r
72\r
c80a0905 73=back\r
74\r
75=head1 COPYRIGHT AND LICENSE\r
76\r
77Copyright 2006 by Brian Cassidy\r
78\r
79This library is free software; you can redistribute it and/or modify\r
80it under the same terms as Perl itself. \r
81\r
82=head1 SEE ALSO\r
83\r
84=over 4 \r
85\r
86=item * L<Catalyst>\r
87\r
88=item * L<Config::Any>\r
89\r
90=item * L<Config::Tiny>\r
91\r
92=back\r
93\r
94=cut\r
95\r
e967a60f 961;\r