• K
    Add Enumerable#index_with. · 39c22303
    Kasper Timm Hansen 提交于
    In the app I'm working on I've wished that index_by had a buddy that would
    assign the hash value instead of the key multiple times.
    
    Enter index_with. Useful when building a hash from a static list of
    symbols. Before you'd do:
    
    ```ruby
    POST_ATTRIBUTES.map { |attr_name| [ attr_name, public_send(attr_name) ] }.to_h
    ```
    
    But now that's a little clearer and faster with:
    
    ````ruby
    POST_ATTRIBUTES.index_with { |attr_name| public_send(attr_name) }
    ```
    
    It's also useful when you have an enumerable that should be converted to a hash,
    but you don't want to muddle the code up with the overhead that it takes to create
    that hash. So before, that's:
    
    ```ruby
    WEEKDAYS.each_with_object(Hash.new) do |day, intervals|
      intervals[day] = [ Interval.all_day ]
    end
    ```
    
    And now it's just:
    
    ```ruby
    WEEKDAYS.index_with([ Interval.all_day ])
    ```
    
    It's also nice to quickly get a hash with either nil, [], or {} as the value.
    39c22303
enumerable_test.rb 8.0 KB