Catalyst-Controller-AutoAssets
view release on metacpan or search on metacpan
lib/Catalyst/Controller/AutoAssets/Handler/CSS.pm view on Meta::CPAN
package Catalyst::Controller::AutoAssets::Handler::CSS;
use strict;
use warnings;
# VERSION
use Moose;
use namespace::autoclean;
with 'Catalyst::Controller::AutoAssets::Handler';
use Path::Class 0.32 qw( dir file );
use Module::Runtime;
use CSS::Scopifier 0.04;
use CSS::Scopifier::Group;
has 'minify', is => 'ro', isa => 'Bool', default => sub{0};
has 'scopify', is => 'ro', isa => 'Maybe[ArrayRef]', default => sub{undef};
sub BUILD {
my $self = shift;
Catalyst::Exception->throw("No minifier available")
if($self->minify && ! $self->minifier);
}
has 'minifier', is => 'ro', isa => 'Maybe[CodeRef]', lazy => 1, default => sub {
my $self = shift;
Module::Runtime::require_module('CSS::Minifier');
return sub { CSS::Minifier::minify(@_) };
};
has 'asset_content_type', is => 'ro', isa => 'Str', default => 'text/css';
has 'ext', is => 'ro', isa => 'Str', default => 'css';
sub is_current_request_arg {
my ($self, $arg) = @_;
return (
$arg eq $self->current_alias ||
$arg eq $self->current_alias . '.' . $self->ext
) ? 1 : 0;
}
sub asset_request {
my ( $self, $c, @args ) = @_;
my $want_asset = join('/',@args);
#$self->prepare_asset;
return $self->unknown_asset($c,$want_asset) unless ($self->asset_name eq $want_asset);
# Let browsers cache forever because we're a CAS path! content will always be current
$c->response->header(
'Content-Type' => $self->asset_content_type,
'Cache-Control' => $self->cache_control_header
);
return $c->response->body( $self->asset_fh );
}
sub asset_name {
my $self = shift;
return $self->current_fingerprint . '.' . $self->ext;
}
sub asset_fh {
my $self = shift;
my $file = $self->built_file;
return undef unless (-f $file);
my $fh = file($file)->openr or die "$! : $file\n";
return $fh;
}
sub html_head_tags {
my $self = shift;
return
( run in 0.467 second using v1.01-cache-2.11-cpan-39bf76dae61 )