mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Enhancing distance_of_time_in_words to prefix year output with over and about depending upon how many months have elapsed
Signed-off-by: Michael Koziarski <michael@koziarski.com> [#3106 state:committed]
This commit is contained in:
committed by
Michael Koziarski
parent
14a6794a8e
commit
b372b4c875
@@ -43,13 +43,14 @@ module ActionView
|
||||
# distance_of_time_in_words(from_time, 50.minutes.from_now) # => about 1 hour
|
||||
# distance_of_time_in_words(from_time, from_time + 15.seconds) # => less than a minute
|
||||
# distance_of_time_in_words(from_time, from_time + 15.seconds, true) # => less than 20 seconds
|
||||
# distance_of_time_in_words(from_time, 3.years.from_now) # => over 3 years
|
||||
# distance_of_time_in_words(from_time, 3.years.from_now) # => about 3 years
|
||||
# distance_of_time_in_words(from_time, from_time + 60.hours) # => about 3 days
|
||||
# distance_of_time_in_words(from_time, from_time + 45.seconds, true) # => less than a minute
|
||||
# distance_of_time_in_words(from_time, from_time - 45.seconds, true) # => less than a minute
|
||||
# distance_of_time_in_words(from_time, 76.seconds.from_now) # => 1 minute
|
||||
# distance_of_time_in_words(from_time, from_time + 1.year + 3.days) # => about 1 year
|
||||
# distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => over 4 years
|
||||
# distance_of_time_in_words(from_time, from_time + 3.years + 6.months) # => over 3 years
|
||||
# distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => about 4 years
|
||||
#
|
||||
# to_time = Time.now + 6.years + 19.days
|
||||
# distance_of_time_in_words(from_time, to_time, true) # => over 6 years
|
||||
@@ -85,8 +86,10 @@ module ActionView
|
||||
when 2880..43199 then locale.t :x_days, :count => (distance_in_minutes / 1440).round
|
||||
when 43200..86399 then locale.t :about_x_months, :count => 1
|
||||
when 86400..525599 then locale.t :x_months, :count => (distance_in_minutes / 43200).round
|
||||
when 525600..1051199 then locale.t :about_x_years, :count => 1
|
||||
else locale.t :over_x_years, :count => (distance_in_minutes / 525600).round
|
||||
else
|
||||
return distance_in_minutes % 525600 < 262800 ?
|
||||
locale.t(:about_x_years, :count => (distance_in_minutes / 525600).round) :
|
||||
locale.t(:over_x_years, :count => (distance_in_minutes / 525600).round)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -69,13 +69,14 @@ class DateHelperTest < ActionView::TestCase
|
||||
assert_equal "2 months", distance_of_time_in_words(from, to + 59.days + 23.hours + 59.minutes + 30.seconds)
|
||||
assert_equal "12 months", distance_of_time_in_words(from, to + 1.years - 31.seconds)
|
||||
|
||||
# 525600..1051199
|
||||
# > 525599
|
||||
assert_equal "about 1 year", distance_of_time_in_words(from, to + 1.years - 30.seconds)
|
||||
assert_equal "about 1 year", distance_of_time_in_words(from, to + 2.years - 31.seconds)
|
||||
|
||||
# > 1051199
|
||||
assert_equal "over 2 years", distance_of_time_in_words(from, to + 2.years + 30.seconds)
|
||||
assert_equal "over 10 years", distance_of_time_in_words(from, to + 10.years)
|
||||
assert_equal "about 1 year", distance_of_time_in_words(from, to + 1.years + 6.months - 1.day)
|
||||
assert_equal "over 1 year", distance_of_time_in_words(from, to + 1.years + 6.months)
|
||||
assert_equal "about 2 years", distance_of_time_in_words(from, to + 2.years + 30.seconds)
|
||||
assert_equal "about 5 years", distance_of_time_in_words(from, to + 5.years + 5.months)
|
||||
assert_equal "over 5 years", distance_of_time_in_words(from, to + 5.years + 6.months)
|
||||
assert_equal "about 10 years", distance_of_time_in_words(from, to + 10.years)
|
||||
|
||||
# test to < from
|
||||
assert_equal "about 4 hours", distance_of_time_in_words(from + 4.hours, to)
|
||||
@@ -104,7 +105,7 @@ class DateHelperTest < ActionView::TestCase
|
||||
def test_distance_in_words_with_dates
|
||||
start_date = Date.new 1975, 1, 31
|
||||
end_date = Date.new 1977, 1, 31
|
||||
assert_equal("over 2 years", distance_of_time_in_words(start_date, end_date))
|
||||
assert_equal("about 2 years", distance_of_time_in_words(start_date, end_date))
|
||||
end
|
||||
|
||||
def test_distance_in_words_with_integers
|
||||
|
||||
Reference in New Issue
Block a user