fix ConfigLoader
[catagits/Catalyst-Plugin-ConfigLoader.git] / lib / Catalyst / Plugin / ConfigLoader / JSON.pm
CommitLineData
b2d85594 1package Catalyst::Plugin::ConfigLoader::JSON;\r
2\r
3use strict;\r
4use warnings;\r
5\r
b2d85594 6=head1 NAME\r
7\r
8Catalyst::Plugin::ConfigLoader::JSON - Load JSON config files\r
9\r
10=head1 DESCRIPTION\r
11\r
12Loads JSON files. Example:\r
13\r
14 {\r
15 "name": "TestApp",\r
c7413665 16 "Controller::Foo": {\r
b2d85594 17 "foo": "bar"\r
18 }\r
19 }\r
20\r
21=head1 METHODS\r
22\r
c7413665 23=head2 extensions( )\r
24\r
25return an array of valid extensions (C<json>, C<jsn>).\r
26\r
27=cut\r
28\r
29sub extensions {\r
30 return qw( json jsn );\r
31}\r
32\r
b2d85594 33=head2 load( $file )\r
34\r
35Attempts to load C<$file> as a JSON file.\r
36\r
37=cut\r
38\r
39sub load {\r
c7413665 40 my $class = shift;\r
41 my $file = shift;\r
b2d85594 42\r
468464b8 43 my $content;\r
44 open(my $fh, $file) or die $!;\r
45 { local $/; $content = <$fh> }\r
46 close $fh;\r
c7413665 47\r
48 eval { require JSON::Syck; };\r
49 if( $@ ) {\r
50 require JSON;\r
51 JSON->import;\r
52 return jsonToObj( $content );\r
b2d85594 53 }\r
54 else {\r
c7413665 55 return JSON::Syck::Load( $content );\r
b2d85594 56 }\r
57}\r
58\r
59=head1 AUTHOR\r
60\r
61=over 4 \r
62\r
63=item * Brian Cassidy E<lt>bricas@cpan.orgE<gt>\r
64\r
65=back\r
66\r
67=head1 COPYRIGHT AND LICENSE\r
68\r
69Copyright 2006 by Brian Cassidy\r
70\r
71This library is free software; you can redistribute it and/or modify\r
72it under the same terms as Perl itself. \r
73\r
74=head1 SEE ALSO\r
75\r
76=over 4 \r
77\r
78=item * L<Catalyst>\r
79\r
d6277728 80=item * L<Catalyst::Plugin::ConfigLoader>\r
c7413665 81\r
b2d85594 82=back\r
83\r
84=cut\r
85\r
861;