enumerable_hashify

Defines Enumerable#hashify, which creates a hash with the enumerable’s items as keys and with a given constant value or with block-computed values:

[1,2,3,4].hashify                --> {1=>true, 2=>true, 3=>true, 4=>true}
[1,2,3,4].hashify("a")           --> {1=>"a", 2=>"a", 3=>"a", 4=>"a"}
[1,2,3,4].hashify{|n| "a" * n}   --> {1=>"a", 2=>"aa", 3=>"aaa", 4=>"aaaa"}

Tested on

MRI 1.8.7, MRI 1.9.2

Naming and Historical Note

I’ve been using this in my projects for years with the name Enumerable#to_h, and figured it was time to make a gem since nobody else seems to have.

But there’s been a bunch of discussion online as to what the proper semantics that Enumerable#to_h should have, without universal agreement. I recently found a proposal from back in 2001 that suggested this same functionality with the name Enumerable#hashify which seemed pretty good to me. I don’t know why that proposal wasn’t adopted as part of ruby. But here it is as a gem.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Released under the MIT License. See LICENSE for details.