From f0fba026a14cbee4af4d033244237d257aeaa15c Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 17 Jan 2014 23:42:04 +0100 Subject: Only do DateTime math when needed (makes code ~2x as fast) --- lib/Travel/Status/DE/URA/Result.pm | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'lib/Travel/Status/DE/URA/Result.pm') diff --git a/lib/Travel/Status/DE/URA/Result.pm b/lib/Travel/Status/DE/URA/Result.pm index bb1c0a9..e8cb1e8 100644 --- a/lib/Travel/Status/DE/URA/Result.pm +++ b/lib/Travel/Status/DE/URA/Result.pm @@ -9,9 +9,7 @@ use parent 'Class::Accessor'; our $VERSION = '0.02'; Travel::Status::DE::URA::Result->mk_ro_accessors( - qw(countdown countdown_sec date datetime destination line line_id - stop stop_id time) -); + qw(datetime destination line line_id stop stop_id)); sub new { my ( $obj, %conf ) = @_; @@ -21,6 +19,37 @@ sub new { return bless( $ref, $obj ); } +sub countdown { + my ($self) = @_; + + $self->{countdown} //= $self->datetime->subtract_datetime( $self->{dt_now} ) + ->in_units('minutes'); + + return $self->{countdown}; +} + +sub countdown_sec { + my ($self) = @_; + + $self->{countdown_sec} + //= $self->datetime->subtract_datetime( $self->{dt_now} ) + ->in_units('seconds'); + + return $self->{countdown_sec}; +} + +sub date { + my ($self) = @_; + + return $self->datetime->strftime('%d.%m.%Y'); +} + +sub time { + my ($self) = @_; + + return $self->datetime->strftime('%H:%M:%S'); +} + sub route_timetable { my ($self) = @_; -- cgit v1.2.3