#!/usr/bin/perl
require "kisrael.pl";

&chugCGI(*input);


print "Content-type:text/html\n\n";

$line1 = htmlify($input{"line1"});
$line2 = htmlify($input{"line2"});

#$line1 = "ab45cd";
#$line2 = "ab123cd";


$buffer = "";

if($line1 ne "" || $line2 ne ""){

    $startdiff = locFirstDiff($line1,$line2);



    $partpre1 =  substr($line1,0,$startdiff);
    $partpre2 =  substr($line2,0,$startdiff);

    $partrest1 = substr($line1,$startdiff);
    $partrest2 = substr($line2,$startdiff);

    $rev1 = reverse($partrest1);
    $rev2 = reverse($partrest2);

    $stopdiff = locFirstDiff($rev1,$rev2);

    $lengthdiff1 = length($partrest1) - $stopdiff;
    $lengthdiff2 = length($partrest2) - $stopdiff;

    $partdiff1 = substr($partrest1,0,$lengthdiff1);
    $partdiff2 = substr($partrest2,0,$lengthdiff2);

    $partpost1 = substr($line1, length($partpre1) + length($partdiff1));
    $partpost2 = substr($line2, length($partpre2) + length($partdiff2));


    $result1 = $partpre1."<font color=red>".$partdiff1."</font>".$partpost1;
    $result2 = $partpre2."<font color=red>".$partdiff2."</font>".$partpost2;

    if($partdiff1 eq "" && $partdiff2 eq ""){
	$summary = "Lines are Identical!";
    } else {
	$summary = "Lines Differ!";
    }

    $buffer = "<br><font color=red>$summary</font><hr><pre>$result1</pre><hr><pre>$result2</pre><hr>";
		
}

sub locFirstDiff {
    my($a,$b) = @_;

    my $i;

    my $stop = max(length($a),length($b));
    for($i = 0; $i < $stop; $i++){
	my $ac = substr($a,$i, 1);
	my $bc = substr($b,$i, 1);

	if($ac ne $bc){
	    return $i;
	} 
    }

    return $i;
}

sub max {
    my($a,$b)=@_;
    if($a >= $b) {return $a;}
    return $b;
}


print<<__EOQ__;
<head><title>diffline</title></head>
<a href="/">kisrael.com</a> | <a href="/tools/">tools</a> |
<b>diffline v0.2</b><br>
A trivial line comparison tool. The block of difference 
between the two lines will be highlighted in red.

<br>
$buffer
<br>
<form method="post">
Line 1:<br>
<input size=100 name="line1" value="$line1"><br>
Line 2:<br>
<input size=100 name="line2"  value="$line2"><br>
<br>
<input type="submit" value="compare">

</form>
__EOQ__






