chiark / gitweb /
De-%ify a big chunk of perl
[ypp-sc-tools.main.git] / yarrg / CommodsWeb.pm
index 0c86e6cbfe0976b20fa6e39f50c057d354486563..d5c77001c60b657800e98701242c6b78be989e83 100644 (file)
@@ -38,6 +38,7 @@ use warnings;
 
 use DBI;
 use POSIX;
+use JSON;
 
 use Commods;
 use CommodsDatabase;
@@ -50,7 +51,10 @@ BEGIN {
     our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
-    @EXPORT      = qw(&dbw_connect &ocean_list $sourcebasedir);
+    @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();
@@ -100,4 +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_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;