package Puzzle::Args;

our $VERSION = '0.02';

use Params::Validate qw(:types);;

use base 'Class::Container';

use HTML::Mason::MethodMaker(
	read_only 		=> [ qw(args) ],
	read_write		=> [ 
	]
);

__PACKAGE__->valid_params (
	args => { type => HASHREF, parse => 'list', default => {}}
);


sub AUTOLOAD {
	my $self	= shift;
	my $key = $AUTOLOAD;
	$key =~ s/.*:://;
	if (@_) {
		$self->set($key,@_);
	} else {
		$self->get($key);
	}
}

sub DESTROY {}

sub get {
	my $self	= shift;
	my $key		= shift;
	return $self->{args}->{$key};
}

sub set {
	my $self	= shift;
	my $key		= shift;
	if (ref($key) eq 'HASH') {
		&__push_hashref($self->{args}, $key);
	} else {
		$self->{args}->{$key} = shift;
	}
	return $self->{args}->{$key};
}

sub __push_hashref {
	# da verificare cosa e' piu' veloce
	my $dst	= shift;
	my $src	= shift;
	my (@cols) = keys %$src;
	@{$dst}{@cols} = @{$src}{@cols};
}


1;
