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 )