X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-test.git;a=blobdiff_plain;f=yarrg%2Fyppedia-chart-parser;h=e6e22b5799374754bcfdd060d381110afaf95a5b;hp=11c7484ad9db1abba4c60947c1c6e4bff48403ba;hb=4ee718187692e362a0e274020a0ad61701f1b2de;hpb=66482684911b5a12a5182797de54a24c2b31c29a diff --git a/yarrg/yppedia-chart-parser b/yarrg/yppedia-chart-parser index 11c7484..e6e22b5 100755 --- a/yarrg/yppedia-chart-parser +++ b/yarrg/yppedia-chart-parser @@ -118,7 +118,7 @@ sub yppedia_chart_parse () { s/\<--.*--\>//g; s/^\s*//; chomp; s/\s+$//; s/\s+/ /g; s/\<\/?(?:b|em)\>//g; - s/\{\{Chart\ style\|[^{}]*\}\}//g; + s/\{\{chart\ style\|[^{}]*\}\}//gi; next unless m/\{\{/; # only interested in chart template stuff my ($x,$y, $arch,$island,$solid,$dirn); @@ -126,9 +126,11 @@ sub yppedia_chart_parse () { if (($x,$y,$arch) = m/^\{\{ chart\ label \|(\d+)\|(\d+)\| .* - (?: \)? \'+ - \[\[ [^][\']* \| (\S+)\ archipelago \]\] - \'+ (?: \<\/big\>)? \}\}$/xi) { + (?: \<(?: big|center )\>)* \'+ + (?: \[\[ | \{\{ ) + [^][\']* \| ([^][\'|]+)\ archipelago + (?: \]\] | \}\} ) + \'+ (?: \<\/(?: big|center )\>)* \}\}$/xi) { printf DEBUG "%2d,%-2d arch %s\n", $x,$y,$arch; push @wiarchlabels, [ $x,$y,$arch ]; } elsif (m/^\{\{ chart\ label \|\d+\|\d+\| @@ -242,8 +244,7 @@ sub yppedia_archs_chart_labels () { # foreach my $label (@wiarchlabels) { my ($ax,$ay,$arch) = @$label; - my $best_ccmulti= -1; - my $best_d2= 0; + my $best_d2= 9999999; my $best_n; # print DEBUG "$ax,$ay arch-island-search $arch\n"; $ay += 1; $ax += 2; # coords are rather to the top left of label @@ -251,19 +252,16 @@ sub yppedia_archs_chart_labels () { next unless exists $winode2island{$vertex}; my $ccix= $wiarchs->connected_component_by_vertex($vertex); my @cc= $wiarchs->connected_component_by_index($ccix); - my $ccmulti= @cc > 1; my ($vx,$vy) = split /,/, $vertex; my $d2= ($vx-$ax)*($vx-$ax) + ($vy-$ay)*($vy-$ay); - my $cmp= $ccmulti <=> $best_ccmulti - || $best_d2 <=> $d2; + my $cmp= $best_d2 <=> $d2; printf DEBUG "%2d,%-2d arch-island-search %5s d2=%4d cc%-2d". - " #cc=%2d ccmulti=%d cmp=%2d %s\n", - $ax,$ay, $vertex, $d2, $ccix, scalar(@cc), $ccmulti, $cmp, + " #cc=%2d cmp=%2d %s\n", + $ax,$ay, $vertex, $d2, $ccix, scalar(@cc), $cmp, $winode2island{$vertex}; next unless $cmp > 0; $best_n= $vertex; $best_d2= $d2; - $best_ccmulti= $ccmulti; } die 'no island vertices?!' unless defined $best_n; my $ccix= $wiarchs->connected_component_by_vertex($best_n); @@ -774,6 +772,7 @@ for (;;) { print STDERR "*** --stdin-chart, aborting!\n"; exit 1; } + progress("checking database"); db_check_referential_integrity(); progress("committing database"); $dbh->commit(); progress("committing _ocean-*.txt"); localtopo_commit(); exit 0;