#!/usr/bin/perl -w # file KLEIDER/web/src/pinw/js_conditional.pl # #if-Zeilen in ECMAscript auswerten # 2020-07-02 Herbert Schiemann use utf8; # Dieser Quelltext ist utf-8-kodiert use Herbaer::Readargs; # read_args () use Herbaer::XMLDataWriter ; use POSIX qw(strftime); # Zur Ausgabe der Zeit binmode (STDIN, ":encoding(utf-8)"); binmode (STDOUT, ":encoding(utf-8)"); binmode (STDERR, ":encoding(utf-8)"); my $args = { "[cnt]verbose" => 1, "def" => [], }; # gibt die Version nach STDOUT aus sub version { print << 'VERSION'; js_conditional.pl #if-Zeilen in ECMAscript auswerten 2020-08-02 Herbert Schiemann GPL 2 oder neuer VERSION }; $args -> {"[sr]version"} = sub { version (); exit 0; }; $args -> {"[sr]help"} = sub { version (); print_message_with_values (<<"HELP", $args); Typische Anwendung ./js_conditional.pl --def DEBUG < SCRIPT.js > SCRIPT_pur.js $0 --help zeigt diese Hilfe an $0 --version zeigt die Programm-Version an $0 [option]... --[no_]verbose erhöht den Umfang der STDERR-Ausgabe \${[cnt]verbose} --def SYM definiert SYM \${def} HELP exit 0; }; # help read_args ($args); my $defs = {}; my $s; for $s (@{$args -> {"def"}}) { $defs -> {$s} = 1; } my $line; my $lock = ""; while (defined ($line = <>)) { if (!$lock) { if ($line =~ /^\/\/#if\s+([A-Za-z0-9_]+)\s*$/) { $lock = $1 unless $defs -> {$1}; next; } print $line; } elsif ($line =~ /^\/\/#endif\s+([A-Za-z0-9_]+)\s*$/) { $lock = "" if ($1 eq $lock); } } # end of file KLEIDER/web/src/pinw/js_conditional.pl