#!/Perl # AIM: To reline HTML, just per tags use strict; use warnings; use File::Basename; # split path ($name,$dir,$ext) = fileparse($file [, qr/\.[^.]*/] ) use Cwd; my $os = $^O; my $perl_dir = '/home/geoff/bin'; my $PATH_SEP = '/'; my $temp_dir = '/tmp'; if ($os =~ /win/i) { $perl_dir = 'C:\GTools\perl'; $temp_dir = $perl_dir; $PATH_SEP = "\\"; } unshift(@INC, $perl_dir); require 'lib_utils.pl' or die "Unable to load 'lib_utils.pl' Check paths in \@INC...\n"; # log file stuff our ($LF); my $pgmname = $0; if ($pgmname =~ /(\\|\/)/) { my @tmpsp = split(/(\\|\/)/,$pgmname); $pgmname = $tmpsp[-1]; } my $outfile = $temp_dir.$PATH_SEP."temp.$pgmname.txt"; open_log($outfile); # user variables my $VERS = "0.0.2 2012-06-28"; my ($IF); ##my $in_file = 'C:\Projects\Tidy\tests\tempmem.htm'; ##my $in_file = 'C:\GTools\perl\fg-servers.htm'; my $in_file = 'C:\GTools\perl\fgms-servers.html'; #my $in_file = 'search[1].txt'; my $out_html = $temp_dir.$PATH_SEP.'temphtm2.htm'; my $chk_for_for = 1; my $load_log = 2; my $nlbrace = 0; my $in_script = 0; my $snlbrace = 0; my $in_table = 0; my $line; my (@filearr,@newarr); sub done_for($) { my $txt = shift; return 1 if ($txt =~ /^for\s*\((.+)\s+in\s+(.+)\)/); my $len = length($txt); my ($i,$ch); my @br = (); my $scnt = 0; my $incomm = 0; my $cc = ''; for ($i = 0; $i < $len; $i++) { $ch = substr($txt,$i,1); if ($incomm) { $incomm = 0 if ($ch eq $cc); } elsif (($ch eq '"')||($ch eq "'")) { $incomm = 1; $cc = $ch; } else { if ($ch eq ';') { if (@br) { $scnt++; } else { prt("Got semicolon outside bracket [$txt]\n"); exit(1); } } elsif ($ch eq '(') { push(@br,$ch); } elsif ($ch eq ')') { if (@br) { pop @br; if (!@br && ($scnt == 2)) { prt("Done for! [$txt]\n"); return 1; # got a complete for statement } } } } } prt("NOT Done for! [$txt]\n"); return 0; # not done for } sub process_array2 { my ($i,$lin,$bit,$ch,$line,$cnt,$maxcnt); $bit = ''; $cnt = 0; $maxcnt = scalar @filearr; prt( "Processing $maxcnt lines...\n" ); my ($i2,$nc,$pc,$i3,$nnc); for ($lin = 0; $lin < $maxcnt; $lin++) { $line = $filearr[$lin]; chomp $line; $line =~ s/\r//; while( $line =~ /\t/ ) { $line =~ s/\t/ /g; } my $ll = length($line); $cnt++; $ch = ''; for ($i = 0; $i < $ll; $i++) { $pc = $ch; $ch = substr($line, $i, 1); $i2 = $i + 1; $i3 = $i + 2; $nc = ($i2 < $ll) ? substr($line,$i2,1) : ''; $nnc = ($i3 < $ll) ? substr($line,$i3,1) : ''; if ($ch eq '<') { if (length($bit)) { prt( "$cnt: [$bit]\n" ); $bit .= "\n"; ###print $HF $bit; push(@newarr, $bit); } $bit = $ch; } elsif ($nlbrace && ($ch eq '{')) { $bit .= $ch; if ($nc eq '}') { $bit .= $nc; $i++; $ch = $nc; if ($nnc eq ';') { $bit .= $nnc; $i++; $ch = $nnc; } } prt( "$cnt: [$bit]\n" ); $bit .= "\n"; ##print $HF $bit; push(@newarr, $bit); $bit = ''; } elsif ($ch eq '}') { if ($nlbrace) { if (length($bit)) { prt( "$cnt: [$bit]\n" ); $bit .= "\n"; ###print $HF $bit; push(@newarr, $bit); } prt( "$cnt: [$ch]\n" ); $bit = $ch; if ($nc eq ';') { $bit .= $nc; $i++; $ch = $nc; } $bit .= "\n"; ###print $HF $bit; push(@newarr, $bit); } else { $bit .= $ch; if ($nc eq ';') { $bit .= $nc; $i++; $ch = $nc; } prt( "$cnt: [$bit]\n" ); $bit .= "\n"; ###print $HF $bit; push(@newarr, $bit); } $bit = ''; } elsif ($ch eq '>') { # closing item $bit .= $ch; if ($bit =~ /