X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-test.git;a=blobdiff_plain;f=yarrg%2FCommods.pm;h=5d0ffe29fd46b8dd7b06802655b84d132ec9f100;hp=91781126d319a32c5f0a5d15f3ec499c82af1fbb;hb=HEAD;hpb=b14effcf3ea7900eb4198f6e50112da751f29add diff --git a/yarrg/Commods.pm b/yarrg/Commods.pm index 9178112..474f43f 100644 --- a/yarrg/Commods.pm +++ b/yarrg/Commods.pm @@ -30,6 +30,8 @@ use LWP::UserAgent; use strict; use warnings; +no warnings qw(exec); + BEGIN { use Exporter (); our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); @@ -207,6 +209,7 @@ sub parse_info1 ($$$) { $commods{$ucname}{Srcs} .= $ss; my $c= $commods{$ucname}; $c->{Volume}= 1000; + $c->{Flags}= ''; my ($ordval, $ordclassval); foreach my $prop (defined $props ? split /\s+/, $props : ()) { if ($prop =~ m/^([1-9]\d*)(k?)g$/) { @@ -220,6 +223,8 @@ sub parse_info1 ($$$) { } elsif ($prop =~ m/^\@(\d+\+?)$/) { $ordval= $1; $ordval =~ s/^(\d+)\+$/ $1 + $lnoix * 10 /e; + } elsif ($prop =~ m/^\!([a-z]+)$/) { + $c->{Flags} .= $1; } else { die "unknown property $prop for $ucname"; } @@ -419,17 +424,19 @@ sub check_tsv_line ($$) { chomp($l) or &$bad_data('missing end-of-line'); - $l !~ m/\P{IsPrint}/ or &$bad_data('nonprinting char(s)'); + $l =~ m/[\t [:graph:]]/ or &$bad_data('nonprinting char(s) '.sprintf "%#x", ord $&); my @v= split /\t/, $l, -1; @v==6 or &$bad_data('wrong number of fields'); + $v[0] = ucfirst lc $v[0]; # YPP anomalously has "Rum Spice" + $v[1] =~ s/^\s+//; $v[1] =~ s/\s+$//; # ooo don't check :-( my ($commod,$stall) = @v; !keys %commods or defined $commods{$commod} or &$bad_data("unknown commodity ".errsan($commod)); - $stall =~ m/^\p{IsUpper}|^[0-9]/ or - &$bad_data("stall not capitalised ".errsan($stall)); + $stall =~ m/\p{IsAlnum}/ or + &$bad_data("stall does not contain with alphanumeric".errsan($stall)); !exists $check_tsv_done{$commod,$stall} or &$bad_data("repeated data ".errsan($commod).",".errsan($stall)); $check_tsv_done{$commod,$stall}= 1;