chiark / gitweb /
Fix prettyprint_age again
[ypp-sc-tools.db-live.git] / yarrg / CommodsWeb.pm
index 5f85511f5fed815f2d73e70e435c710a383e2daa..d5c77001c60b657800e98701242c6b78be989e83 100644 (file)
@@ -52,8 +52,9 @@ BEGIN {
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
     @EXPORT      = qw(&dbw_connect &ocean_list $sourcebasedir
-                     &to_json &to_json_protecttags
-                     &set_ctype_utf8);
+                     &to_json_shim &to_json_protecttags
+                     &set_ctype_utf8
+                     &prettyprint_age &meta_prettyprint_age);
     %EXPORT_TAGS = ( );
 
     @EXPORT_OK   = qw();
@@ -103,11 +104,43 @@ sub dbw_connect ($) {
     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 <<END;
+        $age < 60 ?             'less than a minute'                    :
+        $age < 60*2 ?           '1 minute'                              :
+        $age < 3600*2 ?         $floor ($age/60) $plus' minutes'        :
+        $age < 86400*2 ?        $floor ($age/3600) $plus ' hours'       :
+                                $floor ($age/86400) $plus ' days';
+END
+};
+
+BEGIN { eval '
+  sub prettyprint_age ($) {
+               my ($age) = @_;
+               '.meta_prettyprint_age('$age','floor','.').'
+  };
+  1;
+' or die "$@";
+}
+
+
 1;