Group
Extension

Terse-Config/lib/Terse/Plugin/Config.pm

package Terse::Plugin::Config;

use base 'Terse::Plugin';
use Data::LNPath qw/lnpath/;

sub build_plugin {
	my ($self) = @_;
	if (!$self->config_file) {
		my $file = $0;
		($self->config_file = $0) =~ s/(\.psgi)?$/.json/;
	}
	$self->data = $self->_read_file($self->config_file);
	return $self;
}

sub find {
	my ($self, $path) = @_;
	return lnpath($self->{data}, $path);
}

sub _read_file {
	my ($self, $file) = @_;
	open my $fh, '<', $file or die "Cannot open config file: $file";
	my $content = do { local $/; <$fh> };
	close $fh;
	$self->_parse_config($content);
}

sub _parse_config {
	my ($self, $content) = @_;
	return $self->graft('data', $content);
}

1;

__END__

=head1 NAME

Terse::Plugin::Config - JSON configs

=head1 VERSION

Version 0.04

=cut

=head1 SYNOPSIS

	package MyApp::Plugin::Config;

	use base 'Terse::Plugin::Config';

	1;

	$terse->plugin('config')->find('path/to/key');
	$terse->plugin('config')->data->path->to->key;

=head1 AUTHOR
 
LNATION, C<< <email at lnation.org> >>
 
=head1 LICENSE AND COPYRIGHT
 
L<Terse::Configs>.
 
=cut


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.