X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FModel%2FContentMangler.pm;h=720e0b30e906945646aea91e8fe490dc670d8e8a;hb=a8f570133294adb58620440e75c2cca0d32e0934;hp=d7b7457506281ba6275b3905c2fea2600bce78b3;hpb=7c781a87451941ac6d99ec050e965b1bee30c57a;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/Model/ContentMangler.pm b/lib/Gitalist/Model/ContentMangler.pm index d7b7457..720e0b3 100644 --- a/lib/Gitalist/Model/ContentMangler.pm +++ b/lib/Gitalist/Model/ContentMangler.pm @@ -40,19 +40,24 @@ has _resolver => ( # We need to support multiple languages, and we also want to be able to do HTMLizing (for e.g. Pod) sub process { - my ($self, $c) = @_; - - my @steps = $self->resolve({ filename => $c->stash->{filename} }); - my @css = map { $_->[1]->{css} } grep { exists $_->[1] && exists $_->[1]->{css} && defined $_->[1]->{css} && length $_->[1]->{css} } @steps; - $c->stash(syntax_css => [ map { $c->uri_for('/static/css/syntax/' . $_ . '.css') } @css ]); - - if ($c->stash->{blobs} || $c->stash->{blob}) { - foreach my $step (@steps) { - for ($c->stash->{blobs} ? @{$c->stash->{blobs}} : $c->stash->{blob}) { - $_ = $c->view($step->[0])->render($c, $_, $step->[1]); - } - } - } + my ($self, $c) = @_; + + # Find appropriate mangler based on filename,action,config + # Mangler should provide a transform e.g what part of the stash to mangle + # Then call the transform with the appropriate mangling + + my($transformer, $config) = $self->resolve({ + filename => $c->stash->{filename} || '', + blob => \$c->stash->{blob}, + config => Gitalist->config->{'Model::ContentMangler'}, + action => $c->action->name, + }); + + return + unless $transformer; + + Class::MOP::load_class($transformer); + $transformer->new($config)->transform($c, $config); } __PACKAGE__->meta->make_immutable;