From 70a5e9b9d4febe2575e3d38a1402418e2d641864 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 13 Jan 2019 23:48:11 +0000 Subject: [PATCH] wip --- parse-input-graph | 122 ++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 59 deletions(-) diff --git a/parse-input-graph b/parse-input-graph index 8bf53fc..b6d267c 100755 --- a/parse-input-graph +++ b/parse-input-graph @@ -11,78 +11,82 @@ our %region; # $region{NAME}{Adj}[]{Dikes} sub read_in () { - my $ccolour; - my $cregion; + my $ccolour; + my $cregion; - while (<>) { - next if m{^\s*\#}; - next unless m{\S}; - s{\s+$}{}; - chomp or confess; - if (m{^\w+}) { - $ccolor = $&; - next; - } - if {my ($name, $water) = m{^\t+(\S.*\S)(?: \[(\d+)\])$}) { - confess unless defined $ccolour; - confess if $region{$name}; - $region{$name}{Colour} = $ccolour; - $region{$name}{Water} = $water; - $cregion = $name; - next; - } - if (my ($aref, $adykes) = m{^\t\t(\S.*\S)(?: (\+\+?)$}) { - my $adj = { Dykes => length $adykes }; - if ($aref =~ {\.}) { - $aref =~ s{\-}{[^- ]*-}; - $aref =~ s{\.}{[^- ]* ?}; - $adj->{Regexp} = $aref; - } else { - $adj->{Name} = $aref; - } - push @{ $region{$cregion}{Adj} }, $adj; - next; - } - confess "$_ ?"; + while (<>) { + next if m{^\s*\#}; + next unless m{\S}; + s{\s+$}{}; + chomp or confess; + if (m{^\w+}) { + $ccolour = $&; + next; } + if (my ($name, $water) = m{^\t+(\S.*\S)(?: \[(\d+)\])$}) { + confess unless defined $ccolour; + confess if $region{$name}; + $region{$name}{Colour} = $ccolour; + $region{$name}{Water} = $water; + $cregion = $name; + next; + } + if (my ($aref, $adykes) = m{^\t\t(\S.*\S)(?: (\+\+?))$}) { + my $adj = { Dykes => length $adykes }; + if ($aref =~ {\.}) { + $aref =~ s{\-}{[^- ]*-}; + $aref =~ s{\.}{[^- ]* ?}; + $adj->{Regexp} = $aref; + } else { + $adj->{Name} = $aref; + } + push @{ $region{$cregion}{Adj} }, $adj; + next; + } + confess "$_ ?"; + } } sub unique_aref ($$) { - my ($ra, $adja) = @_; - my $re = $adj->{Regexp}; - return $adj->{Name} unless defined $re; - my @found; - foreach my $rb (sort keys %region) { - next unless $rb =~ m{^$re$}; - foreach my $adjb (@{ $region{rb}{Adj} }) { - my $adjbn = $adjb->{Name}; - next unless defined $adjbn; - next unless $adjbn eq $ra; - } + my ($ra, $adja) = @_; + my $re = $adj->{Regexp}; + return $adj->{Name} unless defined $re; + my @found; + foreach my $rb (sort keys %region) { + next unless $rb =~ m{^$re$}; + foreach my $adjb (@{ $region{rb}{Adj} }) { + my $adjbn = $adjb->{Name}; + next unless defined $adjbn; + next unless $adjbn eq $ra; } - confess "$ra $re @found ?" unless @found==1; - print "resolve $ra -> $re as @found\n"; - return $found[1]; + } + confess "$ra $re @found ?" unless @found==1; + print "resolve $ra -> $re as @found\n"; + return $found[1]; } sub resolve_arefs () { - foreach my $ra (sort keys $region) { - foreach my $adj (@{ $region{$ra}{Adj} }) { - next if defined $adj->{Name}; - $adj->{ProspectiveName} = unique_aref $ra, $adj; - } + foreach my $ra (sort keys $region) { + foreach my $adj (@{ $region{$ra}{Adj} }) { + next if defined $adj->{Name}; + $adj->{ProspectiveName} = unique_aref $ra, $adj; } - foreach my $ra (sort keys $region) { - foreach my $adj (@{ $region{$ra}{Adj} }) { - $adj->{Name} //= $adj->{ProspectiveName}; - } + } + foreach my $ra (sort keys $region) { + foreach my $adj (@{ $region{$ra}{Adj} }) { + $adj->{Name} //= $adj->{ProspectiveName}; } - foreach my $ra (sort keys $region) { - foreach my $adj (@{ $region{$ra}{Adj} }) { - confess unless $adj->{Name} eq unique_aref $ra, $adj; - } + } + foreach my $ra (sort keys $region) { + foreach my $adj (@{ $region{$ra}{Adj} }) { + confess unless $adj->{Name} eq unique_aref $ra, $adj; } + } } read_in(); resolve_arefs(); + +# Local variables: +# cperl-indent-level: 2 +# End. -- 2.30.2