blob: cd342c9e7e53a5a44b4bbdd2df9aafac076467f0 [file] [log] [blame]
#/**
# *******************************************************************************
# * Copyright (C) 2001-2004, International Business Machines Corporation and *
# * others. All Rights Reserved. *
# *******************************************************************************
# */
@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S "%0" %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
goto endofperl
@rem ';
#!perl
#line 14
# Usage: perl varsub.bat [-n|-nr] <infile> <outfile>
#
# Substitutes variables into rules and deletes variable definition
# statements. Variables that expand to UnicodeSets are NOT
# substituted.
#
# -n Afterwards, run native2ascii -encoding UTF8
# -nr Afterwards, run native2ascii -encoding UTF8 -reverse
$N2A = 0;
$IN = shift;
if ($IN =~ /^-n/) {
$N2A = 1;
$N2Aoption = ($IN eq '-nr') ? " -reverse " : "";
$IN = shift;
}
$OUT = shift;
if (!($IN && $OUT)) {
die "Usage: $0 [-n|-nr] <infile> <outfile>";
}
open(IN) or die "Can't open $IN: $!";
open(OUT, ">$OUT") or die "Can't open $OUT: $!";
while (<IN>) {
if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) {
# This looks like a variable definition
my ($var, $def) = ($1, $2);
# Don't substitute UnicodeSet vars
if ($def !~ /^\[/) {
if (exists $VAR{$var}) {
print STDERR "Error: Duplicate definition of $var\n";
} else {
$VAR{$var} = $def;
}
next;
}
}
# Do variable substitutions, and output line
foreach my $var (keys %VAR) {
my $def = $VAR{$var};
s/\$$var\b/$def/g;
}
print OUT;
}
close(OUT);
close(IN);
if ($N2A) {
`native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`;
unlink $OUT;
rename "$OUT.native2ascii", $OUT;
}
__END__
:endofperl