Forum: Ruby could this one line Date extension to return the end of financial year date be any more compact?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D5df9fcd7ef4c3c937435d7d6adeab2a?d=identicon&s=25 Greg Hauptmann (Guest)
on 2008-12-19 08:35
(Received via mailing list)
could this be any more compact or ruby like that it is?

class Date

  def *financial_year_end*
    Date.civil(year, 6, 30) < self ? Date.civil(year, 6, 30) :
Date.civil(year - 1, 6, 30)
  end

end
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-12-19 17:31
(Received via mailing list)
On Dec 19, 2008, at 2:26 AM, Greg Hauptmann wrote:

> could this be any more compact or ruby like that it is?
>
> class Date
>
>  def *financial_year_end*
>    Date.civil(year, 6, 30) < self ? Date.civil(year, 6, 30) :
> Date.civil(year - 1, 6, 30)
>  end
>
> end


Well, you could avoid the multiple date creations and step the date
back 12 months when needed.

class Date
   def financial_year_end
     if (this_year = Date.civil(year, 6, 30)) < self
       this_year
     else
       this_year << 12
     end
   end
end

irb> jun15 = Date.civil(2008, 6, 15)
=> #<Date: 4909265/2,0,2299161>
irb> jul15 = Date.civil(2008, 7, 15)
=> #<Date: 4909325/2,0,2299161>
irb> puts jun15
2008-06-15
=> nil
irb> puts jul15
2008-07-15
=> nil
irb> puts jun15, jun15.financial_year_end
2008-06-15
2007-06-30
=> nil
irb> puts jul15, jul15.financial_year_end
2008-07-15
2008-06-30
=> nil

The name seems odd to me as the expectation that *I* had was to ask a
date when the financial year that it is part of will end.  However,
it's your method, so just document what you mean it to be.

-Rob

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
D5df9fcd7ef4c3c937435d7d6adeab2a?d=identicon&s=25 Greg Hauptmann (Guest)
on 2008-12-19 22:06
(Received via mailing list)
thanks - I like the "this_year << 12" - didn't realize this was
available
for dates

On Sat, Dec 20, 2008 at 2:22 AM, Rob Biedenharn
This topic is locked and can not be replied to.