skip comment & blank lines
[freeside.git] / bin / masonize
1 #!/usr/bin/perl
2
3 foreach $file ( split(/\n/, `find . -depth -print | grep cgi\$`) ) {
4   open(F,$file) or die "can't open $file for reading: $!";
5   @file = <F>;
6   #print "$file ". scalar(@file). "\n";
7   close $file;
8   system("chmod u+w $file");
9   open(W,">$file") or die "can't open $file for writing: $!";
10   select W; $| = 1; select STDOUT;
11   $all = join('',@file);
12
13   $mode = 'html';
14   while ( length($all) ) {
15
16     if ( $mode eq 'html' ) {
17
18       if ( $all =~ /^(.+?)(<%=?.*)$/s && $1 !~ /<%/s ) {
19         print W $1;
20         $all = $2;
21         next;
22       } elsif ( $all =~ /^<%=(.*)$/s ) {
23         print W '<%';
24         $all = $1;
25         $mode = 'perlv';
26         #die;
27         next;
28       } elsif ( $all =~ /^<%(.*)$/s ) {
29         print W "\n";
30         $all = $1;
31         $mode = 'perlc';
32         next;
33       } elsif ( $all !~ /<%/s ) {
34         print W $all;
35         last;
36       } else {
37         warn length($all); die;
38       }
39       die;
40
41     } elsif ( $mode eq 'perlv' ) {
42
43       if ( $all =~ /^(.*?%>)(.*)$/s ) {
44         print W $1;
45         $all=$2;
46         $mode = 'html';
47         next;
48       }
49       die 'unterminated <%= ???';
50
51     } elsif ( $mode eq 'perlc' ) {
52
53       if ( $all =~ /^([^\n]*?)%>(.*)$/s ) {
54         print W "%$1\n";
55         $all=$2;
56         $mode='html';
57         next;
58       }
59       if ( $all =~ /^([^\n]*)\n(.*)$/s ) {
60         print W "%$1\n";
61         $all=$2;
62         next;
63       }
64
65     } else { die };
66
67   }
68
69   close W;
70 }