1 package Gitalist::Model::ContentMangler;
3 use MooseX::Types::Moose qw/HashRef/;
4 use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
5 use Gitalist::ContentMangler::Resolver;
6 use namespace::autoclean;
8 extends 'Catalyst::Model';
10 has resolver_class => (
11 isa => NonEmptySimpleStr,
14 default => 'Gitalist::ContentMangler::Resolver::Default',
17 has resolver_config => (
20 default => sub { {} },
24 does => 'Gitalist::ContentMangler::Resolver',
25 handles => ['resolve'],
26 is => 'bare', lazy => 1,
29 my $class = $self->resolver_class;
30 Class::MOP::load_class($class);
31 return $class->new($self->resolver_config);
35 # FIXME This method is a gross hack.
37 # We need to work out what types of content mangles we have for various things based on hit type
38 # file name and mime type, and perform the appropriate bits..
40 # We need to support multiple languages, and we also want to be able to do HTMLizing (for e.g. Pod)
45 # Find appropriate mangler based on filename,action,config
46 # Mangler should provide a transform e.g what part of the stash to mangle
47 # Then call the transform with the appropriate mangling
49 my($transformer, $config) = $self->resolve({
50 filename => $c->stash->{filename} || '',
51 config => Gitalist->config->{'Model::ContentMangler'},
52 action => $c->action->name,
58 Class::MOP::load_class($transformer);
59 $transformer->new($config)->transform($c, $config);
62 __PACKAGE__->meta->make_immutable;