X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Fweb%2Fcheck_capacitystring;h=e1f2da4cc5f12151a9341ee0dbb23dcc31b7a9a4;hp=a79b6f1ac06f1dffbed02820e33a819a1e31bb29;hb=ea3cffe854b1c540bc68cd2218fdb2be732197fa;hpb=c9225ff45ee5e69855cb24cfb648d903dbba54a7 diff --git a/yarrg/web/check_capacitystring b/yarrg/web/check_capacitystring index a79b6f1..e1f2da4 100644 --- a/yarrg/web/check_capacitystring +++ b/yarrg/web/check_capacitystring @@ -85,7 +85,7 @@ my $parse_values= sub { elsif (s/^( $fqtyrex ) \s* t \s+ //xo) { $def->(0, $1 * 1000.0 ); } elsif (s/^( $fqtyrex ) \s* l \s+ //xo) { $def->(1, $1 ); } elsif (s/^( $fqtyrex ) \s* kl \s+ //xo) { $def->(1, $1 * 1000.0 ); } - elsif (s/^( $iqtyrex ) \s* ([a-z ]+) \s+ //xo) { + elsif (s/^( $iqtyrex ) \s* ([a-z ]+) \s+ //ixo) { my ($qty,$spec) = ($1,$2); $debugf->("VALUE COMMOD $qty '$spec'"); expected_error("Capacity specification must start with". @@ -96,9 +96,9 @@ my $parse_values= sub { FROM commods WHERE commodname LIKE ?"); my ($emsg,$commod,@umv)= dbw_lookup_string($spec,$commodsth,1,0,0, - "No commodity or unit matches \`$spec'", - "Ambiguous commodity (or unit) \`$spec'", - undef); + "No commodity or unit matches ".escerrq($spec), + "Ambiguous commodity (or unit) ".escerrq($spec), + undef); expected_error($emsg) if defined $emsg; $debugf->("VALUE COMMOD FOUND '$commod' @umv"); foreach my $mvi (0,1) { @@ -109,7 +109,8 @@ my $parse_values= sub { push @canon, $commod; } else { s/\s+$//; - expected_error("Did not understand value \`$_'"); + expected_error("Did not understand value ". + escerrq($_)); } } }; @@ -129,18 +130,19 @@ my $parse_term= sub { $_ *= $pct / 100.0; } push @canon, sprintf "%g%%", $pct; - } elsif (!m/[^a-z]/) { + } elsif (!m/[^a-z ]/i) { $debugf->("TERM NAME"); - expected_error("Name (should be unit or commodity) \`$_'". + expected_error("Name (should be unit or commodity)". + escerrq($_). " without preceding quantity") unless $first_term; my $sth= $dbh->prepare("SELECT name,mass,volume". " FROM vessels WHERE name LIKE ?"); my ($emsg,$ship,@smv)= dbw_lookup_string($_,$sth,1,1,2, - "Ship name `$_' not understood.", + "Ship name ".escerrq($_)." not understood.", "Too many matching ship types.", - sub { "Ambiguous - could be $_[0]" }); + sub { "Ambiguous - could be $_[1]" }); expected_error($emsg) if defined $emsg; $debugf->("TERM NAME SHIP '$ship' @smv"); $show_answer= 1; @@ -152,7 +154,7 @@ my $parse_term= sub { $first_term= 0; }; -while ($string =~ s/^(.*?)(\bminus\b|-|\bplus\b|\+)//) { +while ($string =~ s/^(.*?)(\bminus\b|-|\bplus\b|\+)//i) { my ($lhs)= ($1); my @nextsign= $2 =~ m/^p|^\+/ ? (+1,'+') : (-1,'-'); $show_answer= 1;