diff options
Diffstat (limited to 'lib/hashie')
-rw-r--r-- | lib/hashie/dash.rb | 7 | ||||
-rw-r--r-- | lib/hashie/extensions/dash/indifferent_access.rb | 9 | ||||
-rw-r--r-- | lib/hashie/extensions/indifferent_access.rb | 7 |
3 files changed, 22 insertions, 1 deletions
diff --git a/lib/hashie/dash.rb b/lib/hashie/dash.rb index 785d94d..cfb151e 100644 --- a/lib/hashie/dash.rb +++ b/lib/hashie/dash.rb @@ -156,6 +156,13 @@ module Hashie self end + def to_h + defaults = ::Hash[self.class.properties.map { |prop| [prop, self.class.defaults[prop]] }] + + defaults.merge(self) + end + alias to_hash to_h + def update_attributes!(attributes) update_attributes(attributes) diff --git a/lib/hashie/extensions/dash/indifferent_access.rb b/lib/hashie/extensions/dash/indifferent_access.rb index 204cae6..50d4f93 100644 --- a/lib/hashie/extensions/dash/indifferent_access.rb +++ b/lib/hashie/extensions/dash/indifferent_access.rb @@ -19,6 +19,15 @@ module Hashie end private_class_method :requires_class_methods? + def to_h + defaults = ::Hash[self.class.properties.map do |prop| + [Hashie::Extensions::IndifferentAccess.convert_key(prop), self.class.defaults[prop]] + end] + + defaults.merge(self) + end + alias to_hash to_h + module ClassMethods # Check to see if the specified property has already been # defined. diff --git a/lib/hashie/extensions/indifferent_access.rb b/lib/hashie/extensions/indifferent_access.rb index c2c7888..7702c14 100644 --- a/lib/hashie/extensions/indifferent_access.rb +++ b/lib/hashie/extensions/indifferent_access.rb @@ -25,6 +25,11 @@ module Hashie module IndifferentAccess include Hashie::Extensions::RubyVersionCheck + # @api private + def self.convert_key(key) + key.to_s + end + def self.included(base) Hashie::Extensions::Dash::IndifferentAccess.maybe_extend(base) @@ -68,7 +73,7 @@ module Hashie end def convert_key(key) - key.to_s + IndifferentAccess.convert_key(key) end # Iterates through the keys and values, reconverting them to |