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