our %region;
# $region{NAME}{Colour}
# $region{NAME}{Water}
+# $region{NAME}{L}
# $region{NAME}{Adj}[]{Name}
# $region{NAME}{Adj}[]{Regexp}
# $region{NAME}{Adj}[]{Dikes}
+# $region{NAME}{Adj}[]{L}
sub read_in () {
my $ccolour;
$ccolour = $&;
next;
}
- if (my ($name, $water) = m{^\t(\S.*\S)(?: \[(\d+)\])?$}) {
+ if (my ($name, $water) = m{^\t(\S.*\w)(?: \[(\d+)\])?$}) {
confess unless defined $ccolour;
confess "$name ?" if $region{$name};
$region{$name}{Colour} = $ccolour;
$region{$name}{Water} = $water;
+ $region{$name}{L} = $.;
$cregion = $name;
next;
}
- if (my ($aref, $adykes) = m{^\t\t(\S.*\S)(?: (\+\+?))?$}) {
- my $adj = { Dykes => length $adykes };
+ if (my ($aref, $adykes) = m{^\t\t(\S.*[A-Za-z.])(?: (\+\+?))?$}) {
+ my $adj = { Dykes => length $adykes, L => $. };
if ($aref =~ m{\.}) {
$aref =~ s{\-}{[^- ]*-};
$aref =~ s{\.}{[^- ]* ?};
my ($ra, $adja) = @_;
my $re = $adja->{Regexp};
return $adja->{Name} unless defined $re;
- my @found;
+ my @cands;
foreach my $rb (sort keys %region) {
- next unless $rb =~ m{^$re$};
- foreach my $adjb (@{ $region{rb}{Adj} }) {
+ #print STDERR "?? $ra -> $re $rb ?\n";
+ foreach my $adjb (@{ $region{$rb}{Adj} }) {
my $adjbn = $adjb->{Name};
next unless defined $adjbn;
+ #print STDERR "?? $ra -> $re $rb ?? $adjbn\n";
next unless $adjbn eq $ra;
+ push @cands, $rb;
}
}
- confess "$ra $re @found ?" unless @found==1;
+ my @found = grep { m{^$re$} } @cands;
+ local $" = ' / ';
+ confess "$adja->{L} $ra $re | @cands | @found | ?" unless @found==1;
print "resolve $ra -> $re as @found\n";
return $found[1];
}
sub resolve_arefs () {
+ #print Dumper(\%region);
foreach my $ra (sort keys %region) {
foreach my $adj (@{ $region{$ra}{Adj} }) {
next if defined $adj->{Name};