JavaScript-Prepare

 view release on metacpan or  search on metacpan

lib/JavaScript/Prepare.pm  view on Meta::CPAN

package JavaScript::Prepare;

use Modern::Perl;

use File::Basename;
use FileHandle;
use JavaScript::Minifier::XS    qw( minify );

use version;
our $VERSION = qv( 0.1 );


sub new {
    my $class = shift;
    my %args  = @_;
    
    my $self = {
            strip => 0,
        };
    bless $self, $class;
    
    $self->{'strip'} = 1
        if defined $args{'strip'};
    
    return $self;
}

sub process {
    my $self = shift;
    my @args = @_;
    
    my $minified = '';
    foreach my $arg ( @args ) {
        given ( $arg ) {
            when ( -f $arg ) {
                $minified .= $self->process_file( $arg );
            }
            when ( -d $arg ) {
                $minified .= $self->process_directory( $arg );
            }
            default {
                return '';
            }
        }
    }
    
    return $minified;
}

sub process_string {
    my $self = shift;
    my $js   = shift;
    
    $js =~ s{^ \s* console.log(.*?); \s* $}{}gmx
        if $self->{'strip'};
    
    my $minified = minify($js);
    
    return "${minified}\n"
        if defined $minified && length $minified;
    return '';
}



( run in 2.634 seconds using v1.01-cache-2.11-cpan-98e64b0badf )