1 package Gitalist::Model::ContentMangler;
3 use MooseX::Types::Moose qw/HashRef/;
4 use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
5 use namespace::autoclean;
7 extends 'Catalyst::Model';
9 # XXX This could live as metadata somewhere or in the config or whatever..
10 has transform_params => (
14 blob => [qw/blob filename/],
15 diff_fancy => [qw/diffs/],
22 my $config = Gitalist->config->{'Model::ContentMangler'}; # XXX Yeah it's a bit ugly. Feh.
23 my $action = $c->action->name;
24 my $mangler = $c->req->param('cm') || '';
25 my $transformer = $config->{$action}{$mangler || 'default'};
27 return unless $transformer;
28 Class::MOP::load_class($transformer);
30 my $result = $transformer->new()->transform(
31 map { $_ => $c->stash->{$_} } @{ $self->transform_params->{$action} }
34 $c->stash->{mangled} = 1 if %$result;
38 __PACKAGE__->meta->make_immutable;