#!/opt/PUBperl/bin/perl

#
# This will convert code snippets into full Java applications
# Input is a text file.  Each block of non white space is
# converted into a Java application
#
# Usage: makeCode file.txt
#

$dir=`pwd`;
chop($dir);
($basename = $dir) =~ s/^.*\///;
$count = 0;
$block = "";
$classname = "";

while (<>)
{
	# Get first comment as Class name.
	if (!($classname) && /^\/\/ (.*)/)
	{
		$classname = $1;
	}
	if (/^$/)
	{
		&doBlock;
		$block = "";
		$classname = "";
		next;
	}
	$block=$block . $_;
}

&doBlock;
exit;

sub getName
{
	local($retval);
	if ($classname)
	{
		return $classname;
	}
	if ($count < 10)
	{
		$retval = "${basename}_Example0${count}";
	} else {
		$retval = "${basename}_Example${count}";
	}
	$count++;
	return $retval;
}

sub doBlock
{
	return if ($block eq "");
	$block =~ s/
//g;
	$newblock = "";
	if ($block =~ /public class (\S*)/)
	{
		$newblock = $block;
		$filename = $1;
	} else {
		$filename = &getName;
		$block =~ s/^/\t\t/mg;
		if ($block =~ /Vector/)
		{
			$newblock = "import java.util.*;\n\n";
		}
		$newblock = $newblock . "public class $filename\n{\n";
		$newblock = $newblock . "\tpublic static void main(String args[])\n\t{\n";
		$newblock = $newblock . $block . "\t}\n}\n";
	}
	$javafile = "$filename.java";
	print "filename: $javafile\n";
	open (JAVA, ">$javafile") || die "$javafile bad";
	print JAVA $newblock;
	close (JAVA);
}
