configurable alternate field order for cust edit, RT13102
[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   $newline = ''; #avoid prepending extraneous newlines
10   $all = join('',@file);
11
12   $w = '';
13
14   $mode = 'html';
15   while ( length($all) ) {
16
17     if ( $mode eq 'html' ) {
18
19       if ( $all =~ /^(.+?)(<%=?.*)$/s && $1 !~ /<%/s ) {
20         $w .= $1;
21         $all = $2;
22         next;
23       } elsif ( $all =~ /^<%=(.*)$/s ) {
24         $w .= '<%';
25         $all = $1;
26         $mode = 'perlv';
27         #die;
28         next;
29       } elsif ( $all =~ /^<%(.*)$/s ) {
30         $w .= $newline; $newline = "\n";
31         $all = $1;
32         $mode = 'perlc';
33
34         #avoid newline prepend fix from borking indented first <%
35         $w =~ s/\n\s+\z/\n/;
36         $w .= "\n" if $w =~ /.+\z/;
37
38         next;
39       } elsif ( $all !~ /<%/s ) {
40         $w .= $all;
41         last;
42       } else {
43         warn length($all); die;
44       }
45       die;
46
47     } elsif ( $mode eq 'perlv' ) {
48
49       if ( $all =~ /^(.*?%>)(.*)$/s ) {
50         $w .= $1;
51         $all=$2;
52         $mode = 'html';
53         next;
54       }
55       die "unterminated <%= ??? (in  $file):";
56
57     } elsif ( $mode eq 'perlc' ) {
58
59       if ( $all =~ /^([^\n]*?)%>(.*)$/s ) {
60         $w .= "%$1\n";
61         $all=$2;
62         $mode='html';
63         next;
64       }
65       if ( $all =~ /^([^\n]*)\n(.*)$/s ) {
66         $w .= "%$1\n";
67         $all=$2;
68         next;
69       }
70
71     } else { die };
72
73   }
74
75   system("chmod u+w $file");
76   select W; $| = 1; select STDOUT;
77   open(W,">$file") or die "can't open $file for writing: $!";
78   print W $w;
79   close W;
80 }