package File::Assets::Filter::Minifier::Base;
use strict;
use warnings;
use base qw/File::Assets::Filter::Minifier/;
use File::Assets::Carp;
my %minifier_package;
sub _minifier_package {
my $class = shift;
return $minifier_package{$class} ||= do {
my $package = substr $class, length qq/File::Assets::Filter::Minifier::/;
# JavaScript
# JavaScript::XS
# CSS
# CSS::XS
my @package = split m/::/, $package;
join qw/::/, (shift @package), qw/Minifier/, @package;
};
}
my %minifier_package_is_available;
sub _minifier_package_is_available {
my $class = shift;
return $minifier_package_is_available{$class} if exists $minifier_package_is_available{$class};
my $package = $class->_minifier_package;
return $minifier_package_is_available{$class} = eval "require $package;";
}
sub new {
my $class = shift;
croak "You need to install ", $class->_minifier_package, " to use this filter: $class" unless $class->_minifier_package_is_available;
return $class->SUPER::new(@_);
}
1;