chiark / gitweb /
New way of showing position in list info
[ypp-sc-tools.db-test.git] / yarrg / yppedia-chart-parser
index dacf5c354725fd017a8f930c4991693463329f6c..e6e22b5799374754bcfdd060d381110afaf95a5b 100755 (executable)
@@ -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+)\| .*
-                   (?: \<big\>)? \'+
-                   \[\[ [^][\']* \| ([^][\'|]+)\ 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;