#! /usr/bin/perl # # Combine scripts in the MathJax project into single-file-load # configuration files. # # Usage: ./combineMJlist-unpacked proj-dir [files.lis] # use Cwd; use FindBin; $DIR = $FindBin::Bin; $MJX = shift || getcwd; $name = $ARGV[0]; $name =~ s!.*/!!; die "Usage: ./combineMJlist srcdir files.lis\n" unless $name =~ m/\S/; die "Project directory must contain an unpacked/config directory\n" unless -d "$MJX/unpacked/config"; $outfile = "config/$name"; $outfile =~ s/\.[^.]*/.js/; @files = (); while ($file = <>) { chomp($file); if ($file =~ m/\S/) { push (@files,$file); } else { @config = <>; chomp(@config); @config = grep {!/^extensions:/} @config; while (scalar(@config) && $config[-1] !~ m/\S/) {pop(@config)} $config[-1] =~ s/,$// if scalar(@config); last; } } @CONFIG = (); @JAX = (); @EXTENSIONS = (); foreach $file (@files) { if ($file =~ m!^jax/(.*)/config.js!) {push(@JAX,"\"$1\"")} if ($file =~ m!^extensions/a11y/(.*)!) {push(@EXTENSIONS,"\"[a11y]/$1\"")} elsif ($file =~ m!^extensions/(.*)!) {push(@EXTENSIONS,"\"$1\"")} if ($file =~ m!^config/(.*)!) {push(@CONFIG,"\"$1\"")} } @HUB = (); push(@HUB,"config: [".join(",",@CONFIG)."]") if scalar(@CONFIG); push(@HUB,"extensions: [".join(",",@EXTENSIONS)."]") if scalar(@EXTENSIONS); push(@HUB,"jax: [".join(",",@JAX)."]") if scalar(@JAX); push(@HUB,join("\n ",@config)) if scalar(@config); open(CONFIG,"<","$DIR/template-unpacked.js") || die "Can't open $DIR/template-unpacked.js: $!\n"; @lines = ; close(CONFIG); $config = join("",@lines); $config =~ s!%%% NAME %%%!/MathJax/unpacked/$outfile!; print "Creating $outfile\n"; open(CONFIG,">","$MJX/unpacked/$outfile") || die "Can't write $MJX/$outfile: $!\n"; print CONFIG $config; print CONFIG "MathJax.Hub.Config({\n"; print CONFIG " ",join(",\n ",@HUB); print CONFIG "\n});\n\n"; print CONFIG "MathJax.Ajax.loadComplete(\"[MathJax]/$outfile\");\n"; close(CONFIG); 1;