#!/usr/bin/perl

# convert latex tables to text

# copyright Rob Izzard 2005

# I am NOT responsible for what you do with this script. It is provided to
# you out of the (limited) goodness of my heart :)

open(FP,"<$ARGV[0]")||die;
while($l=<FP>)
{

    # remove comments
    $l=~s/\%.*//;
#    print "## $l\n";

    if(($l=~/\\begin{tabular}/)||
       ($l=~/\\begin{deluxetable}/))
    {
	$table=1;
    }
    elsif($l=~/\\end\s*{tabular}/)
    {
	$table=0;
    }

    if(($table==1)&&(($l=~/\&/)||($l=~/\\cr/)||($l=~/\\\\/)))
    {

	my @d=split(/\&/,$l);
	my $newline;
	if(($l=~/\\cr/)||($l=~/\\\\/))
	{
	    $newline="\n";
	}

	for(my $i=0;$i<=$#d;$i++)
	{
	    my $skip=0;
	    $_=$d[$i];
	    # remove space at ends
	    s/^\s+//;
	    s/\s+$//;
	    
	    # remove or reformat latex
	    if(s/\\multicolumn{(\d+)}{.*}{(.*)}/$2/g)
	    {
		$skip=$1-1;
	    }
	    s/\^?\\circ/deg/g;
	    s/\\pm/\+\-/g;
	    s/~/ /g;
	    s/\$//g;
	    s/\\nl//g;
	    s/--/-/g;
	    s/\\\\//g;
	    s/\\object\{(.*)\}/$1/g;
	    s/\\,/ /g;
	    s/\^\{?\d+\}?//g; # remove superscript notes
	    s/\[\d+\]//g; # remove notes
	    s/\\nodata/\*/g;
	    s/\.\.\./\*/g;
	    s/,/_comma_/g;
	    s/\\sigma/1-sigma error/g;
	    s/\\[a-z]*//g;
	    while(s/\{\}//g)
	    {}

	    if($_ eq "-")
	    {
		$_="*";
	    }
	    
	    print $_;
	    while($skip>0)
	    {
		print ",";
		$skip--;
	    }
	    if($i!=$#d)
	    {
		print ",";
	
	    }
	    else
	    {
		print $newline;
	    }
	}@d;
    }

}

close FP;
