From 77591ad357f28be9a727710a1dfc5e044a459000 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 28 Jan 2006 11:14:52 +0000 Subject: pipeline fatte e testate, forse fix #2 git-svn-id: svn://luxion/repos/WebCoso/trunk@142 fcb26f47-9200-0410-b104-b98ab5b095f3 --- lib/WebCoso/Pipeline/Base.pm | 20 +++++++++++++------- lib/WebCoso/Step/Base.pm | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 lib/WebCoso/Step/Base.pm (limited to 'lib') diff --git a/lib/WebCoso/Pipeline/Base.pm b/lib/WebCoso/Pipeline/Base.pm index 7018fc0..1e43d4d 100644 --- a/lib/WebCoso/Pipeline/Base.pm +++ b/lib/WebCoso/Pipeline/Base.pm @@ -10,25 +10,31 @@ __PACKAGE__->mk_classdata('_steps'); sub set_steps { my ($class,@steps)=@_; - my @full_steps=map { - my $full_step_name="WebCoso::Step::$_"; + my @step_instances=(); + + while (@steps) { + my $step_name=shift @steps; + my $step_init_args=shift @steps; + + my $full_step_name="WebCoso::Step::$step_name"; if (! WebCoso::Step->is_step($full_step_name)) { WebCoso::X::NoSuchStep->throw( pipeline => $class, step => $_, ); } - $full_step_name; - } @steps; - $class->_steps([@full_steps]); + push @step_instances,$full_step_name->new($step_init_args); + } + + $class->_steps([@step_instances]); } sub process { - my ($class, $resource)=@_; + my ($class, $resource,$stage)=@_; for my $step (@{$class->_steps()}) { - $resource = $step->process($resource); + $resource = $step->process($resource,$stage); } return 1; diff --git a/lib/WebCoso/Step/Base.pm b/lib/WebCoso/Step/Base.pm new file mode 100644 index 0000000..f15370c --- /dev/null +++ b/lib/WebCoso/Step/Base.pm @@ -0,0 +1,14 @@ +package WebCoso::Step::Base; +use strict; +use warnings; +use WebCoso::X; +use WebCoso::Step; + +sub new { + my ($class,$arg_ref)=@_; + + my $self={%$arg_ref}; + return bless $self,$class; +} + +1; -- cgit v1.2.3