[Jifty-commit] r3938 - in jifty/trunk: lib/Jifty t

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Wed Aug 22 11:56:46 EDT 2007


Author: sartak
Date: Wed Aug 22 11:56:46 2007
New Revision: 3938

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/DateTime.pm
   jifty/trunk/t/DateTime.t

Log:
 r30488 at caladan:  sartak | 2007-08-22 11:55:55 -0400
 Add friendly_date method to Jifty::DateTime which special-cases yesterday/today/tomorrow


Modified: jifty/trunk/lib/Jifty/DateTime.pm
==============================================================================
--- jifty/trunk/lib/Jifty/DateTime.pm	(original)
+++ jifty/trunk/lib/Jifty/DateTime.pm	Wed Aug 22 11:56:46 2007
@@ -105,4 +105,34 @@
     return $self;
 }
 
+=head2 friendly_date
+
+Returns the date given by this C<Jifty::DateTime> object. It will display "today"
+for today, "tomorrow" for tomorrow, or "yesterday" for yesterday. Any other date
+will be displayed in ymd format.
+
+=cut
+
+sub friendly_date {
+    my $self = shift;
+    my $ymd = $self->ymd;
+
+    my $rel = DateTime->now(time_zone => $self->time_zone);
+    if ($ymd eq $rel->ymd) {
+        return "today";
+    }
+    
+    $rel->subtract(days => 1);
+    if ($ymd eq $rel->ymd) {
+        return "yesterday";
+    }
+    
+    $rel->add(days => 2);
+    if ($ymd eq $rel->ymd) {
+        return "tomorrow";
+    }
+    
+    return $ymd;
+}
+
 1;

Modified: jifty/trunk/t/DateTime.t
==============================================================================
--- jifty/trunk/t/DateTime.t	(original)
+++ jifty/trunk/t/DateTime.t	Wed Aug 22 11:56:46 2007
@@ -1,9 +1,27 @@
 #!/usr/bin/perl -w
 
-use Jifty::Test tests => 2;
+use Jifty::Test tests => 8;
 
 use_ok 'Jifty::DateTime';
 
 my $date = Jifty::DateTime->new_from_string("2006-05-03 01:23:45");
 my $date_clone = $date->clone();
 is $date, $date_clone;
+
+is $date->friendly_date, '2006-05-03';
+
+$date = Jifty::DateTime->now;
+is $date->friendly_date, 'today';
+
+$date = Jifty::DateTime->now->subtract(days => 1);
+is $date->friendly_date, 'yesterday';
+
+$date = Jifty::DateTime->now->subtract(days => 2);
+like $date->friendly_date, qr/^\d\d\d\d-\d\d-\d\d$/;
+
+$date = Jifty::DateTime->now->add(days => 1);
+is $date->friendly_date, 'tomorrow';
+
+$date = Jifty::DateTime->now->add(days => 2);
+like $date->friendly_date, qr/^\d\d\d\d-\d\d-\d\d$/;
+


More information about the Jifty-commit mailing list