Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 8700

Show
Ignore:
Timestamp:
01/23/08 07:25:20 (9 months ago)
Author:
bitsweat
Message:

Enumerable#group_by uses ActiveSupport::OrderedHash

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activesupport/lib/active_support/core_ext/enumerable.rb

    r8604 r8700  
    1616  #   "2006-02-23 -> Transcript" 
    1717  def group_by 
    18     groups = [] 
    19  
    20     inject({}) do |grouped, element| 
    21       index = yield(element) 
    22  
    23       if group = grouped[index] 
    24         group << element 
    25       else 
    26         group = [element] 
    27         groups << [index, group] 
    28         grouped[index] = group 
    29       end 
    30  
     18    inject ActiveSupport::OrderedHash.new do |grouped, element| 
     19      (grouped[yield(element)] ||= []) << element 
    3120      grouped 
    3221    end 
    33  
    34     groups 
    3522  end if RUBY_VERSION < '1.9' 
    3623 
  • trunk/activesupport/test/core_ext/enumerable_test.rb

    r8604 r8700  
    2222    end 
    2323 
    24     assert_equal objects.uniq.map(&:name), grouped.map { |name, group| name } 
     24    assert_equal objects.uniq.map(&:name), grouped.keys 
    2525  end 
    2626