Footing
An ActiveSupport style utility library that employs delegation instead of monkey patching.
Immutabilty
Footing employs some principles of immutability that are common in functional programming. The integrity of original objects/data is preserved because Footing creates a deep copy by default.
NOTE: This behavior can be overridden to improve performance... just be sure you know what you're doing
Hash
Filter
Recursively filter out unwanted values based on key.
data = { name: "Joe", password: "secret" }
copy = Footing::Hash.new(data)
copy.filter!(:password)
copy.inner_object # => {:name=>"Joe", :password=>"[FILTERED]"}