FIX #52: Joe Rafaniello: Improve performance of DeepDup by using Set instead of an Array to track visited nodes.
No longer officially supporting Ruby 2.0.0 and Ruby 2.1.x. They are still tested against but are permitted to fail within the Travis configuration.
FIX: Fix subscript notation for keys that collide with existing public methods. Related to #51.
FIX #49: Ensure test suite passes with Ruby 2.4.0-rc1.
FIX #46:
Pedro Sena: fix issues with mutating arrays within an ROS that has
recurse_over_arrays: true
FIX #42:
[]
tried to call private methods if they existed instead of
triggering the
method_missing
code path. Thanks to
@SaltwaterC for reporting.
API-Breaking Change: Frederico Aloi: Change to_h
to always
return symbol
keys. This is more consistent with OpenStruct.
API-Breaking Change: No longer officially supporting Ruby 1.9.3.
NEW/FIX: Kris Dekeyser: Ensure that ROS continues to work with the new version of OpenStruct included in dev versions of Ruby 2.2.x and Ruby 2.3. It now implements lazy attribute creation, which broke ROS.
NEW: Added preserve_original_keys
option to revert to the 0.x
behavior. Set
it to true if you want methods like to_h
to
return strings and perhaps
other non-symbols.
NEW: Ensuring support for Ruby 2.0.0+ including the upcoming 2.3 release and JRuby 9000.
FIX: Peter Yeremenko: Fix a mistake in one of the examples in the README
FIX: Fix ROS when initialized with nil instead of a hash.
FIX: Kris Dekeyser: Fix indifferent subscript access (string or symbol). Also backported several ostruct methods for Ruby 1.9.x.
FIX: Partial fix for allowing an array in a RecursiveOpenStruct tree to be modified. However, methods such as to_hash are still broken.
FIX: Thiago Guimaraes: Restore being able to create an ROS from a hash that contains strings for keys instead of symbols for keys.
FIX: fervic: Address a bug in the Ruby 1.9's version of
OpenStruct's dup
FIX: Victor Guzman: Reset memoized values on assignment in order to force the implementation to re-memoize them.
MAINT: fervic: Simplified initialize
FIX: Actually ensure that the internal @table is properly dependent or independent of the input hash tree. I mistakenly refactored away an important piece of code that fervic added.
FIX: Actually ensure that #dup
works.
Also refactored how #to_h
is implemented to use newer
plumbing.
NEW: fervic: Make subscript notation be recursive like dot-method notation
NEW: fervic: Added a new option, :mutate_input_hash
, that
allows the caller
to determine whether the original hash is mutated or not
when a nested value
in the ROS tree is modified. If false (the default),
the ROS will not modify
the original hash tree. If tree, changes within
the ROS tree will also be
reflected in the hash tree.
FIX: fervic: Setting/updating a value nested deep in an ROS tree is kept when the top-level ROS object is duped.
MAINT: Extracted #deep_dup
added by fervic into its own class.
This makes it
possibly easier to use/copy for others, and it cleans up the
main class file.
MAINT: Moved #debug_inspect
out to its own module. This cleans
up the main
class file a bit. It is also something I may remove if I ever
have a major
version bump.
MAINT: Adding MRI 2.2 to Travis-CI
NEW: Tom Chapin: Added a #to_hash
alias for #to_h
MAINT: Added Travis-CI support. Testing against MRI 1.9.3, MRI 2.0, MRI 2.1, and JRuby in 1.9 mode. Not aiming to support 1.8.7 since it has been nearly a year since it has officially been retired.
FIX: Matt Culpepper: Allow ROS subclasses to use their own type when creating nested objects in the tree.
FIX: Ensure proper file permissions when building the gem archive
FIX: Sebastian Gaul: Make recurse_over_arrays
option work on
more
deeply-nested hashes.
FIX: Setting a value on a nested element, then getting that value should show the updated value
FIX: Calling #to_h
on the top-level ROS object also reflects
changed nested
elements.
FIX: Fixing the spec:coverage
Rake task
NEW: Added #to_h
MAINT: Stopped using jeweler for gem development/packaging
FIX: Cédric Felizard: Fix to make it work with MRI 1.8.7 again
MAINT: More spec fixups to improve spec runs on MRI 1.9.3
NEW: Matthew O'Riordan: Add support for recursion working over Arrays
NEW: Made recursion over Arrays optional with
recurse_over_arrays
option.
NEW: Improving #debug_inspect
so that it can use any IO
object, not just
STDOUT.
MAINT: Much cleanup of development dependencies, README file, etc.
FIX: Offirmo: Slight improvement for #debug_inspect
NEW: Offirmo: Added debug_inspect
MAINT: Offirmo: Worked the development files so that it can be built as a gem
Initial release