templates!!!
[freeside.git] / bin / masonize
diff --git a/bin/masonize b/bin/masonize
new file mode 100755 (executable)
index 0000000..475c9a6
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+
+foreach $file ( split(/\n/, `find . -depth -print | grep cgi\$`) ) {
+  open(F,$file) or die "can't open $file for reading: $!";
+  @file = <F>;
+  #print "$file ". scalar(@file). "\n";
+  close $file;
+  system("chmod u+w $file");
+  open(W,">$file") or die "can't open $file for writing: $!";
+  select W; $| = 1; select STDOUT;
+  $all = join('',@file);
+
+  $mode = 'html';
+  while ( length($all) ) {
+
+    if ( $mode eq 'html' ) {
+
+      if ( $all =~ /^(.+?)(<%=?.*)$/s && $1 !~ /<%/s ) {
+        print W $1;
+        $all = $2;
+        next;
+      } elsif ( $all =~ /^<%=(.*)$/s ) {
+        print W '<%';
+        $all = $1;
+        $mode = 'perlv';
+        #die;
+        next;
+      } elsif ( $all =~ /^<%(.*)$/s ) {
+        print W "\n";
+        $all = $1;
+        $mode = 'perlc';
+        next;
+      } elsif ( $all !~ /<%/s ) {
+        print W $all;
+        last;
+      } else {
+        warn length($all); die;
+      }
+      die;
+
+    } elsif ( $mode eq 'perlv' ) {
+
+      if ( $all =~ /^(.*?%>)(.*)$/s ) {
+        print W $1;
+        $all=$2;
+        $mode = 'html';
+        next;
+      }
+      die 'unterminated <%= ???';
+
+    } elsif ( $mode eq 'perlc' ) {
+
+      if ( $all =~ /^([^\n]*?)%>(.*)$/s ) {
+        print W "%$1\n";
+        $all=$2;
+        $mode='html';
+        next;
+      }
+      if ( $all =~ /^([^\n]*)\n(.*)$/s ) {
+        print W "%$1\n";
+        $all=$2;
+        next;
+      }
+
+    } else { die };
+
+  }
+
+  close W;
+}