aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-11 14:58:46 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-11 14:58:46 -0700
commitbca623bc5342007216ec9757c5192fef455e8a65 (patch)
treeecb6c520d9b8df8ac8aee09f0d95b9d06bb96fd0 /activesupport/lib
parent1fa76a2f3de5276001afe5d6815136680f7a87de (diff)
parentb16b08ebde636dd530afeeb00ca32f6d49fda819 (diff)
downloadrails-bca623bc5342007216ec9757c5192fef455e8a65.tar.gz
rails-bca623bc5342007216ec9757c5192fef455e8a65.tar.bz2
rails-bca623bc5342007216ec9757c5192fef455e8a65.zip
Merge pull request #12200 from dchelimsky/simplify-duration-inspect-even-more
Reduce Duration#inspect to a single series of transformations
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/duration.rb10
1 files changed, 4 insertions, 6 deletions
diff --git a/activesupport/lib/active_support/duration.rb b/activesupport/lib/active_support/duration.rb
index 00727ef73c..87b6407038 100644
--- a/activesupport/lib/active_support/duration.rb
+++ b/activesupport/lib/active_support/duration.rb
@@ -70,12 +70,10 @@ module ActiveSupport
alias :until :ago
def inspect #:nodoc:
- val_for = parts.inject(::Hash.new(0)) { |h,(l,r)| h[l] += r; h }
- [:years, :months, :days, :minutes, :seconds].
- select {|unit| val_for[unit].nonzero?}.
- tap {|units| units << :seconds if units.empty?}.
- map {|unit| [unit, val_for[unit]]}.
- map {|unit, val| "#{val} #{val == 1 ? unit.to_s.chop : unit.to_s}"}.
+ parts.
+ reduce(::Hash.new(0)) { |h,(l,r)| h[l] += r; h }.
+ sort_by {|unit, _ | [:years, :months, :days, :minutes, :seconds].index(unit)}.
+ map {|unit, val| "#{val} #{val == 1 ? unit.to_s.chop : unit.to_s}"}.
to_sentence(:locale => :en)
end