scribble-mathjax/mathjax-dev/packer/packMJ
2010-08-02 17:46:41 +00:00

48 lines
1.3 KiB
Perl
Executable File

#! /usr/local/bin/perl
# Compresses the MathJax javascript files that have changed
# since the last compression was performed.
# Note that the mathjax/font/HTML-CSS/TeX/png font data files
# are handled separately by packMJfonts.
# Note also that you need a copy of yuicompressor to be
# in this directory.
#
# Usage: ./packMJ
$SRC = "../../mathjax/unpacked";
$DST = $SRC; $DST =~ s!/unpacked$!!;
sub packDir {
my ($src,$dst) = @_;
opendir(SRC,$src);
my @files = grep(/^[^.]/,readdir(SRC));
closedir(SRC);
foreach my $file (@files) {
if (-d "$src/$file") {
next if "$src/$file" eq "$SRC/fonts";
next if "$src/$file" eq "$SRC/docs";
next if "$src/$file" eq "$SRC/unpacked";
if (! -e "$dst/$file") {mkdir "$dst/$file"}
packDir("$src/$file","$dst/$file");
} elsif ($file =~ m/\.js$/) {
packFile($src,$dst,$file);
}
}
}
sub packFile {
my ($src,$dst,$file) = @_;
$src .= "/$file"; $dst .= "/$file";
my ($stime,$ssize) = (stat($src))[9,7];
my $dtime = (stat($dst))[9];
return if $stime <= $dtime || $ssize <= 1024;
system("./packMJfile '$src' '$dst'");
my $dsize = (stat($dst))[7];
print "Size: $dsize was: $ssize [saved: ",$ssize-$dsize," or ",
sprintf("%.1f",100*($ssize-$dsize)/$ssize),"%]\n";
}
packDir($SRC,$DST);
1;