package CGI::Lazy::Plugin;

use strict;
use warnings;

use CGI::Lazy::Globals;

#-------------------------------------------------------------------------------
sub AUTOLOAD {
	my $self = shift;

	my $name = our $AUTOLOAD;
	return if $name =~ /::DESTROY$/;
	my @list = split "::", $name;
	my $value = pop @list;

	if (@_) {
		return $self->{_plugins}->{$value} = shift; 
	} else {
		return $self->{_plugins}->{$value}; 
	}
}
#------------------------------------------------------------
sub config {
	my $self = shift;

	return $self->q->config;
}

#------------------------------------------------------------
sub q {
	my $self = shift;

	return $self->{_q};
}

#------------------------------------------------------------
sub new {
	my $class = shift;
	my $q = shift;

	my $self = bless {_q => $q}, $class;

	$self->{_plugins} = $self->config->plugins;

	return $self; 
}

1

__END__

=head1 LEGAL

#===========================================================================

Copyright (C) 2008 by Nik Ogura. All rights reserved.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

Bug reports and comments to nik.ogura@gmail.com. 

#===========================================================================

=head1 NAME

CGI::Lazy::Plugin

=head1 SYNOPSIS

	use CGI::Lazy;

	my $q = CGI::Lazy->new('/path/to/config/file');

=head1 DESCRIPTION

Internal module used for tracking which pieces of CGI::Lazy are being used.  Plugins are enabled or excluded in the config file.

=head1 METHODS

=head2 config ( ) 

Returns CGI::Lazy::Config object.

=head2 q ()

Returns CGI::Lazy object

=head2 new ( q )

Constructor

=head3 q

CGI::Lazy Object

=cut

