X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2FCommodsWeb.pm;h=1eae15e11e84159e50cf834f641fa970eccb6298;hb=6d33c3a7453e6b13057cda116d3dadd52d4bcd0b;hp=46b32e6763ebb25d2b75f0f1a3a6670b63caf1a2;hpb=ea35c3e59168d937ba97e9e76b79918936fbaa6d;p=ypp-sc-tools.db-live.git diff --git a/yarrg/CommodsWeb.pm b/yarrg/CommodsWeb.pm index 46b32e6..1eae15e 100644 --- a/yarrg/CommodsWeb.pm +++ b/yarrg/CommodsWeb.pm @@ -43,39 +43,43 @@ use JSON; use Commods; use CommodsDatabase; -our $self_url; -our $base_url; - BEGIN { use Exporter (); our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = 1.00; @ISA = qw(Exporter); - @EXPORT = qw(&dbw_connect &ocean_list $sourcebasedir - to_json to_json_protecttags); + @EXPORT = qw(&dbw_connect &ocean_list &sourcebasedir + &to_json_shim &to_json_protecttags + &set_ctype_utf8 + &prettyprint_age &meta_prettyprint_age); %EXPORT_TAGS = ( ); @EXPORT_OK = qw(); } -our $datadir='.'; -our $sourcebasedir; - -for my $dir (@INC) { - if ($dir =~ m/\.perl-lib$/) { - $sourcebasedir= "$dir/.."; - if (stat "$dir/DATA") { - $datadir= "$dir/DATA"; - } elsif ($!==&ENOENT) { - $datadir= "$dir"; - } else { - die "stat $dir/DATA $!"; +sub sourcebasedir () { + my $dir; + + for my $dir (@INC) { + if ($dir =~ m/\.perl-lib$/) { + return "$dir/.."; } - last; } -} -defined $sourcebasedir or die "no source base dir in @INC"; + return $dir; +} + +my datadir () { + my $dir= sourcebasedir(); + if (stat "$dir/DATA") { + return "$dir/DATA"; + } elsif ($!==&ENOENT) { + return "$dir"; + } else { + die "stat $dir/DATA $!"; + } + return '.'; +} my @ocean_list; @@ -99,14 +103,46 @@ sub dbw_connect ($) { my ($ocean) = @_; die "unknown ocean $ocean ?" unless grep { $_ eq $ocean } ocean_list(); - return dbr_connect($datadir, $ocean); + return dbr_connect(datadir(), $ocean); +} + +sub to_json_shim ($) { + my ($obj) = @_; + # In JSON.pm 2.x, jsonToObj prints a warning to stderr which + # our callers don't like at all. + if ($JSON::VERSION >= 2.0) { + return to_json($obj); + } else { + return objToJson($obj); + } } sub to_json_protecttags ($) { my ($v) = @_; - my $j= to_json($v); + my $j= to_json_shim($v); $j =~ s,/,\\/,g; return $j; } +sub meta_prettyprint_age ($$$) { + my ($age,$floor,$plus) = @_; + return <