#!/usr/bin/perl

use Data::Dumper;
use Clone qw(clone);

$lande[1]="Afghanistan ";
$lande[2]="Albanien ";
$lande[3]="Algerie ";
$lande[4]="Andorra ";
$lande[5]="Argentina ";
$lande[6]="Australien";
$lande[7]="Belgien ";
$lande[8]="Bhutan ";
$lande[9]="Bolivia ";
$lande[10]="Brasilien ";
$lande[11]="Bulgarien ";
$lande[12]="Burma ";
$lande[13]="Cambodge ";
$lande[14]="Cameroun ";
$lande[15]="Canada ";
$lande[16]="Centralafrikanske Føderation ";
$lande[17]="Centralafrikanske Republik ";
$lande[18]="Ceylon ";
$lande[19]="Chile ";
$lande[20]="Colombia ";
$lande[21]="Congo ";
$lande[22]="Costa Rica ";
$lande[23]="Cuba ";
$lande[24]="Danmark ";
$lande[25]="Ecuador ";
$lande[26]="Eire ";
$lande[27]="Elfenbenskysten ";
$lande[28]="England ";
$lande[29]="Etiopien ";
$lande[30]="Filippinerne ";
$lande[31]="Finland ";
$lande[32]="Frankrig ";
$lande[33]="Gabon ";
$lande[34]="Ghana ";
$lande[35]="Grækenland ";
$lande[36]="Guinea ";
$lande[37]="Guatemala ";
$lande[38]="Haiti ";
$lande[39]="Holland ";
$lande[40]="Honduras ";
$lande[41]="India ";
$lande[42]="Iran(Persien) ";
$lande[43]="Iraq ";
$lande[44]="Island ";
$lande[45]="Israel ";
$lande[46]="Italien ";
$lande[47]="Japan ";
$lande[48]="Jordan ";
$lande[49]="Jugoslavien ";
$lande[50]="Kina ";
$lande[51]="Kuwait ";
$lande[52]="Kypern ";
$lande[53]="Laos ";
$lande[54]="Libanon ";
$lande[55]="Liberia ";
$lande[56]="Libia ";
$lande[57]="Lichtenstein ";
$lande[58]="Luxemburg ";
$lande[59]="Madagascar ";
$lande[60]="Malaya ";
$lande[61]="Mali ";
$lande[62]="Marokko ";
$lande[63]="Mauretanien ";
$lande[64]="Mexico ";
$lande[65]="Monaco ";
$lande[66]="Mongoliet ";
$lande[67]="Nepal ";
$lande[68]="New Zealand ";
$lande[69]="Nicaragua ";
$lande[70]="Niger ";
$lande[71]="Nigeria ";
$lande[72]="Nord Korea ";
$lande[73]="Nord Vietnam ";
$lande[74]="Norge ";
$lande[75]="Oman ";
$lande[76]="Pakistan ";
$lande[77]="Panama ";
$lande[78]="Paraguay ";
$lande[79]="Peru ";
$lande[80]="Polen ";
$lande[81]="Portugal ";
$lande[82]="Rep.Congo ";
$lande[83]="Rep.Dominicana ";
$lande[84]="Rep.Volta ";
$lande[85]="Rumænien ";
$lande[86]="San Marino ";
$lande[87]="San Salvador ";
$lande[88]="Saudi Arabien ";
$lande[89]="Schweiz ";
$lande[90]="Senegal ";
$lande[91]="Sierre Leone ";
$lande[92]="Singapore ";
$lande[93]="Somali ";
$lande[94]="Spanien ";
$lande[95]="Sudan ";
$lande[96]="Sverige ";
$lande[97]="Sydafrikanske Union ";
$lande[98]="Syd Korea ";
$lande[99]="Syd Vietnam ";
$lande[100]="Syrien ";
$lande[101]="Taiwan(Formosa) ";
$lande[102]="Tchad ";
$lande[103]="Thailand ";
$lande[104]="Tibet ";
$lande[105]="Tjekkoslovakiet ";
$lande[106]="Tunis ";
$lande[107]="Tyrkiet ";
$lande[108]="Ungarn ";
$lande[109]="Uruguay ";
$lande[110]="USA ";
$lande[111]="USSR ";
$lande[112]="Vatikanet ";
$lande[113]="Venezuela ";
$lande[114]="Vest Tyskland ";
$lande[115]="Yemen ";
$lande[116]="Ægypten ";
$lande[117]="Østrig ";
$lande[118]="Øst Tyskland ";
$lande[119]="Indonesien ";

sub indsaet
{
  my $l=$_[0];
  if(exists $found->{$l})
  {
    print "$l findes allerede\n";
  }
  else
  {
    push @labels, $l;
    $found->{$l} = 1;
    $lno->{$l}=$lineno;
  }
}
sub indsaetref
{
  my $l=$_[0];
  my $r = join ",",@{$refs{$l}};
  $reflist .= " $l: ".$r;
  print "indsaetref: $reflist\n";
}

@labels=[];

# pass 1

open IN,"tyvesnice3.asc";
$lineno=0;

while($l=<IN>)
{
  chomp($l);
  $lineno++;
  if($l =~ /^\s*(\w+):[^=]/l)
  {
    $l2=$1;
    indsaet($l2);
  }
  elsif($l =~ /^\s*(\w+):$/l)
  {
    $l2=$1;
    indsaet($l2);
  }
}
close IN;

@labelssort = sort {length($b) <=> length($a)} @labels;

# pass 2

%refs = ();

open IN,"tyvesnice3.asc";
$lineno=0;

while($l=<IN>)
{
  chomp($l);
  $lineno++;
  if($l =~ /_g_o/)
  {
    $com = "";
    $l1 = $l;
    for $la (@labelssort)
    {
      $i1 = index($l1, $la);
      if($i1>=0)
      {
	$com .= "$la: ".$lno->{$la}." ";
	$l1 = substr($l1, 0, $i1).substr($l1,$i1+length($la));
	push @{$refs{$la}}, $lineno;
	print "lineno: $lineno $la $l\n";
      }
    }
  }
}
close IN;

print Dumper(\%refs);

# pass 3

open IN,"tyvesnice3.asc";
open OUT,">tyvesnice4.asc";
$lineno=0;

while($l=<IN>)
{
  chomp($l);
  $lineno++;
  $reflist = "";
  if($l =~ /^\s*(\w+):[^=]/l)
  {
    $l2=$1;
    indsaetref($l2);
  }
  elsif($l =~ /^\s*(\w+):$/l)
  {
    $l2=$1;
    indsaetref($l2);
  }
  print OUT $l;
  if($l =~ /_g_o/)
  {
    $com = "";
    $l1 = $l;
    for $la (@labelssort)
    {
      $i1 = index($l1, $la);
      if($i1>=0)
      {
	$com .= "$la: ".$lno->{$la}." ";
	$l1 = substr($l1, 0, $i1).substr($l1,$i1+length($la));
	print "$la: $l1\n";
      }
    }
    if($com ne "")
    {
      print OUT " #031 $com #044";
    }
  }
  if($reflist ne "")
  {
    print OUT " #031 ref: $reflist #044";
  }
  if($l =~ /lt:/)
  {
    $llist="";
    $l2=$l;
    while(1)
    {
      print "l2: $l2\n";
      if($l2 =~ /^(.*?)(\d+)(.*?)$/)
      {
	$l2 = $1.$3;
	print "ny l2: $l2\n";
	$land=$2;
	if($llist ne "")
	{
	  $llist.=", ";
	}
	$llist.=$land.": ".$lande[$land];
      }
      else
      {
	last;
      }
    }
    if($llist ne "")
    {
      print OUT " #031 $llist #044";
    }
  }

  print OUT "\n";
}
close IN;
close OUT;


