Project

hashery

1.42
No commit activity in last 3 years
No release in over 3 years
The Hashery is a tight collection of Hash-like classes. Included among its many offerings are the auto-sorting Dictionary class, the efficient LRUHash, the flexible OpenHash and the convenient KeyHash. Nearly every class is a subclass of the CRUDHash which defines a CRUD model on top of Ruby's standard Hash making it a snap to subclass and augment to fit any specific use case.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

Hashery

Gem Version Build Status Fork Me Report Issue Gittip

Homepage · Development · Report Issue · Chat

Description

Among Ruby Facets most common additions were an assortment of Hash-like classes. To better support this collection of libraries it was deemed prudent to create a new project specifically for them. Hence the Facets Hashery.

Included in this collection are the widely used OrderedHash, the related but more featured Dictionary class, a number of open classes similar to the standard OpenStruct, some variations of the standard Hash class and a few other yummy morsels.

Usage

For instruction on usage, please see the individual library files included in this collection and read the demo documents which give examples of almost all features.

Core Extensions

Hashery adds four core extensions of Ruby's Hash class: #retrieve, #rekey, #rekey! and Hash.create. The first is simply an alias for #[]. The later two have proven too useful over the years to omit. And the last is a convenience class method for populating a new hash with another hash upon initialization. All of these are sorely missing for Ruby itself, which is why they are provided here.

Installation

To install with RubyGems simply open a console and type:

$ sudo gem install hashery

Or add it as a dependency to your project's Gemfile:

gem "hashery"

Tarball packages are available for manual site installations via Ruby Setup.

Authors

Developers who have contributed code to the project include:

  • Kirk Haines
  • Joshua Hull
  • Robert Klemme
  • Jan Molic
  • George Moschovitis
  • Jeena Paradies
  • Erik Veenstra

Contributing

Don't be a lump on a log. See an issue? Have a suggestion? Want to help? Well git in there!

Communicating

The project is hosted on Github so the easiest means of communication is via the Issues page. For more direct communication you can try the #rubyworks IRC channel on irc.freenode.net.

    IRC

Testing

Hashery uses QED and Lemon test frameworks. The QED framework to create well tested high-level documentation. Run the QED specs via:

$ qed -Ilib demo/

Lemon is used to create low-level unit tests. Run these via the Rubytest:

$ rubytest -Ilib -Itest test/

Patches

Hashery's repository is hosted on GitHub. If you'd like to offer up a fix or feature, fork the repo and submit a pull request (preferably in a topic branch). I assume you have heard all the talk about proper practices, so I won't bug you with it yet again.

Donations

Yes, we FOSS programmers need to eat too! ;-) No seriously, any help you can offer goes a long way toward continued development of Rubyworks projects, including Hashery. Hop over to our Gittips page, or see the upper right-hand corner on the Rubyworks homepage. Thanks!

Copyrights

Copyright (c) 2010 Rubyworks

Licensed under the BSD-2-Clause license.

See LICENSE.txt file for further details.

Some libraries included in the Hashery have special copyrights attributing specific authors. Please see each library script for specifics and the NOTICE.txt file for an overview.