summaryrefslogtreecommitdiff
path: root/lib/GridFiller.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/GridFiller.pm')
-rw-r--r--lib/GridFiller.pm15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/GridFiller.pm b/lib/GridFiller.pm
index 2b92285..dbe7010 100644
--- a/lib/GridFiller.pm
+++ b/lib/GridFiller.pm
@@ -6,6 +6,7 @@ use GridFiller::Status;
use GridFiller::Result;
use GridFiller::Chooser::Smarter;
use Carp;
+use Class::MOP;
with 'MooseX::Log::Log4perl';
@@ -22,11 +23,19 @@ has grid => (
);
sub fill {
- my ($self) = @_;
+ my ($self,$args) = @_;
+
+ my $status = GridFiller::Status->new({
+ grid => $self->grid,
+ words => $self->words,
+ mode => $args->{mode}
+ });
+
+ my $chooser_class = 'GridFiller::Chooser::'.($args->{chooser} || 'Random');
+ Class::MOP::load_class($chooser_class);
- my $status = GridFiller::Status->new({grid => $self->grid, words => $self->words});
my $result = GridFiller::Result->new({source_grid => $self->grid});
- my $chooser = GridFiller::Chooser::Smarter->new({status => $status});
+ my $chooser = $chooser_class->new({status => $status});
while ($status->unfilled() && $status->has_next_word()) {
my $word = $status->get_next_word();