X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.web-live.git;a=blobdiff_plain;f=yarrg%2Fweb%2Froutetextstring;h=4d59c7fa5e2d4b5697d9e55bb6a00aa7d1e90bc9;hp=4cec5f9d337b1f994f694857ec528887a5c2828a;hb=2961c979e0f7bdae7183d49ab7fab5f5830dff4e;hpb=beff42c07503b7a74bd455d1c299341d16a493cd diff --git a/yarrg/web/routetextstring b/yarrg/web/routetextstring index 4cec5f9..4d59c7f 100644 --- a/yarrg/web/routetextstring +++ b/yarrg/web/routetextstring @@ -13,9 +13,9 @@ $string use CommodsWeb; use HTML::Entities; use JSON; +use Data::Dumper; -db_setocean($ocean); -db_connect(); +my $dbh= dbw_connect($ocean); my $sth= $dbh->prepare("SELECT archipelago,islandid,islandname FROM islands WHERE islandname LIKE ? @@ -25,18 +25,27 @@ my $sth= $dbh->prepare("SELECT archipelago,islandid,islandname my (@results, $canontext); my ($output, $output_wrong); -if ($format =~ 'json') { +if ($format =~ /json/) { $r->content_type($ctype or $format); $output= sub { print to_json({ success => 1, show => length $canontext ? encode_entities($canontext) : ' ', - })}; + })}; $output_wrong= sub { print to_json({ success => 0, show => $_[0], - })}; -} + })}; +} +if ($format =~ /return/) { + $output= sub { return { Error => '', Results => \@results }; }; + $output_wrong= sub { return { Error => $_[0] }; }; +} +if ($format =~ /dump/) { + $r->content_type('text/plain'); + $output_wrong= sub { print Dumper(\@_); }; + $output= sub { print Dumper(\@results, $canontext); }; +} foreach my $each (split m#[/|,]#, $string) { $each =~ s/^\s*//; $each =~ s/\s*$//; $each =~ s/\s+/ /g; @@ -44,7 +53,6 @@ foreach my $each (split m#[/|,]#, $string) { my $err= sub { my $msg= sprintf $_[0], encode_entities($each); $output_wrong->($msg); - $m->abort(); }; my %m; my $results; @@ -57,19 +65,18 @@ foreach my $each (split m#[/|,]#, $string) { } if (!$results) { if (!%m) { - $err->('no island or arch matches "%s"'); + return $err->('no island or arch matches "%s"'); } elsif (%m > 5) { - $err->(' '); + return $err->(' '); } else { - $err->('ambiguous island or arch "%s", could be '. - join(', ', sort keys %m)); + return $err->('ambiguous island or arch "%s",'. + ' could be '.join(', ', sort keys %m)); } } push @results, $results->[0]; } $canontext= join ' | ', map { $_->[2] } @results; - -$output->(); +return $output->();