#!/usr/local/bin/perl

die if @ARGV != 3;

my($srcfile, $srcset, $sysid);

$srcfile = $ARGV[0];
$srcset  = $ARGV[1];
$sysid   = $ARGV[2];

open(TGT, $srcfile) or die $!;
$line = <TGT>; $line =~ s/[\r\n]*$//;
if ($line =~ m/^SrcSent/) {  # Handle n-best
    while ($line = <TGT>) {
	$line =~ s/[\r\n]*$//;
	if ($line =~ m/^\d+\s0\t(.*)$/) {
	    push @segs, $1;
	}
    }
    
} else {
    push @segs, $line;
    while ($line = <TGT>) {
	$line =~ s/[\r\n]*$//;
	push @segs, $line;
    }
}
close(TGT);

#print STDERR "Translation count: " .  scalar(@segs) . "\n";

$segindex = 0;
open(TST, $srcset) or die $!;
while ($line = <TST>) {
    $line =~ s/refset/tstset/;
    $line =~ s/srcset/tstset/;
    $line =~ s/\s+tgtlang=\"[^\"]*\"//;
    $line =~ s/\s+trglang=\"[^\"]*\"//;
    $line =~ s/sysid=\"([^\"]+)\"/sysid=\"$sysid\"/i;
    if ($line =~ m/<seg/) {
	$line =~ s/>[^<]*</"> " . $segs[$segindex] . " <"/e;
	$segindex++;
	print $line;
    } elsif ($line =~ m/<DOC/i) {
	if ($line =~ m/docid\s*=\"([^\" >]+)\"/) {
	    $docid = $1;
	    if (defined($seen{$docid})) {
		while ($line = <TST>) {
		    last if $line =~ m/<\/doc>/i;
		}
	    } else {
		#print "Doc id $docid\n";
		$seen{$docid} = 1;
		$line =~ s/ sysid=\"[^\"]*\"//;
		$line =~ s/>/ sysid=\"$sysid\">/;
		print $line;
	    }
	}
    } else {
	print $line;
    }
}
close(TST);

#print STDERR "Segindex $segindex\n";
