HashStruct provides an object based on Hash, but acts like Struct (or OpenStruct), providing helpful accessors for each key from the get-go. It also magically parses string values when it can (eg, dates, URIs, numbers, and does so recursively.
HashStruct is similar to Struct from Ruby standard library, the difference is that HashStruct.generate creates a class which takes a hash with attributes rather than just positional arguments as Struct.new does.
A Ruby DSL and parser for converting hashes into trees of data objects.