From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#####################################################################
#
# Name : Gantry::Conf::Provider::FlatFile::Config::Tiny;
# Author : Frank Wiles <frank@revsys.com>
#
# Description : Provider for using Config::Tiny style config
# files
#
#####################################################################
use strict;
use warnings;
use Carp qw(croak);
#------------------------------------------------
# config
#------------------------------------------------
# Configure ourselves via Config::Tiny
#------------------------------------------------
sub config {
my $self = shift;
my $file = shift;
# Create our Config::Tiny object
my $conf = Config::Tiny->new();
# Retrieve the configuration file
$conf = Config::Tiny->read( $file );
# Fixup our data because Config::Tiny uses an odd format.
# We need to move the "root" parameters into being actual
# keys instead of members of the '_' sub-hash
my %return_hash;
foreach my $k ( keys( %{ $conf } ) ) {
if( $k eq '_' ) {
foreach my $inner_key ( keys( %{ $conf->{_} } ) ) {
$return_hash{$inner_key} = $conf->{_}->{$inner_key};
}
}
else {
$return_hash{$k} = $conf->{$k};
}
}
return( \%return_hash );
} # END config
1;
__END__
=head1 NAME
Gantry::Conf::Provider::FlatFile::Config::Tiny -- Uses Config::Tiny to configure your Gantry application
=head1 SYNOPSIS
use Gantry::Conf::Provider::FlatFile::Config::Tiny;
my $config_hash = Gantry::Conf::Provider::FlatFile::Config::Tiny->config( $file );
=head1 DESCRIPTION
This allows Gantry::Conf to handle files in a Config::Tiny ( aka INI ) style.
=head1 METHODS
=over 4
=item config
Returns a config subhash by applying Config::Tiny to an ini style file.
=back
=head1 SEE ALSO
Gantry(3), Gantry::Conf(3), Config::Tiny(3)
=head1 AUTHOR
Frank Wiles <frank@revsys.com>
=head1 COPYRIGHT and LICENSE
Copyright (c) 2006, Revolution Systems, LLC.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.6 or,
at your option, any later version of Perl 5 you may have available.
=cut