#!/usr/bin/perl
use Regexp::MultiLanguage;
use Regexp::MultiLanguage::Perl;
use Regexp::MultiLanguage::PHP;
use Regexp::MultiLanguage::JavaScript;
use File::Slurp;
use strict;
use warnings;
my %languages = ('JavaScript' => ['js','js','//',''],
'Perl' => ['perl','pl','#',''],
'PHP' => ['php','php','<?php //',' ?>'] );
opendir RE_DIR, 'regex';
my %files = map { /\.rgx$/ ? ( $_, scalar( read_file( "regex/$_" ) ) ) : () } readdir RE_DIR;
closedir RE_DIR;
foreach my $language ( keys %languages ) {
print "----------------\n";
print "Building for $language: \n";
my ($dir,$ext,$comment_start,$comment_end) = @{ $languages{$language} };
open OUT, ">dist/$dir/rev.$ext";
if ( -e "$dir/rev.$ext" ) {
print "Supplied file.\n";
open IN, "<$dir/rev.$ext";
print OUT <IN>, "\n\n";
close IN;
}
foreach my $file ( keys %files ) {
my $code = Regexp::MultiLanguage->compile( $files{$file}, $language, 'isa_' );
print "$file\n";
print OUT "$comment_start from $file $comment_end\n$code\n\n"
}
close OUT;
print "\n";
}
open IN, "<dist/perl/rev.pl";
open OUT, ">REV/lib/REV/Functions.pm";
print OUT "package REV::Functions;\n\n";
print OUT "use strict;\n";
print OUT "use warnings;\n\n";
print OUT "use Exporter::NoWork;\n\n";
print OUT <IN>;
close IN;
close OUT;