Could this one line Date extension to return the end of financial year date be any more compact?

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

On Dec 19, 2008, at 2:26 AM, Greg H. 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 B. http://agileconsultingllc.com
[email protected]

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 B.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs