chiark / gitweb /
De-%ify a big chunk of perl
[ypp-sc-tools.main.git] / yarrg / CommodsWeb.pm
index 46b32e6763ebb25d2b75f0f1a3a6670b63caf1a2..d5c77001c60b657800e98701242c6b78be989e83 100644 (file)
@@ -52,7 +52,9 @@ BEGIN {
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
     @EXPORT      = qw(&dbw_connect &ocean_list $sourcebasedir
-                     to_json to_json_protecttags);
+                     &to_json_shim &to_json_protecttags
+                     &set_ctype_utf8
+                     &prettyprint_age &meta_prettyprint_age);
     %EXPORT_TAGS = ( );
 
     @EXPORT_OK   = qw();
@@ -102,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;