From 5a74b4fa0cf79163755560daed640ead85fa0b71 Mon Sep 17 00:00:00 2001 From: Marc Chantreux Date: Thu, 15 Jan 2009 23:18:06 +0000 Subject: [PATCH] more readable version of the init and new sub Signed-off-by: Henri-Damien LAURENT --- C4/Dates.pm | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/C4/Dates.pm b/C4/Dates.pm index 1064fa462c..578e08e992 100644 --- a/C4/Dates.pm +++ b/C4/Dates.pm @@ -111,27 +111,39 @@ sub _chron_to_hms { } sub new { - my $this = shift; - my $class = ref($this) || $this; - my $self = {}; - bless $self, $class; - return $self->init(@_); + shift; # as clone isn't implemented, we don't carre about package name + my $self = bless {}, __PACKAGE__; + $self->init(@_) } + sub init ($;$$) { - my $self = shift; - my $dformat; - $self->{'dateformat'} = $dformat = (scalar(@_) >= 2) ? $_[1] : _prefformat(); - ($format_map{$dformat}) or croak - "Invalid date format '$dformat' from " . ((scalar(@_) >= 2) ? 'argument' : 'system preferences'); - $self->{'dmy_arrayref'} = [((@_) ? $self->dmy_map(shift) : localtime )] ; - $debug and warn "(during init) \@\$self->{'dmy_arrayref'}: " . join(' ',@{$self->{'dmy_arrayref'}}) . "\n"; - return $self; -} -sub output ($;$) { - my $self = shift; - my $newformat = (@_) ? _recognize_format(shift) : _prefformat(); - return (eval {POSIX::strftime($posix_map{$newformat}, @{$self->{'dmy_arrayref'}})} || undef); + my ($self,$string_date,$dformat) = @_; + + my $from; + if ( $dformat ) { + $from = 'argument'; + } else { + $from = 'system preferences'; + $dformat = _prefformat; + } + + $self->{'dateformat'} = $dformat; + $format_map{$dformat} or croak "Invalid date format '$dformat' from $from"; + + $self->{'dmy_arrayref'} = $string_date + ? $self->dmy_map($string_date) + : localtime + ; + + $debug and warn + q[(during init) @$self->{'dmy_arrayref'}:] + , join(' ',@{$self->{'dmy_arrayref'}}) + , "\n" + ; + + return $self; } + sub today ($;$) { # NOTE: sets date value to today (and returns it in the requested or current format) my $class = shift; $class = ref($class) || $class; -- 2.39.5