summaryrefslogtreecommitdiff
path: root/logic/helpers/hash.rb
diff options
context:
space:
mode:
Diffstat (limited to 'logic/helpers/hash.rb')
-rw-r--r--logic/helpers/hash.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/logic/helpers/hash.rb b/logic/helpers/hash.rb
index 90432b5..66b6742 100644
--- a/logic/helpers/hash.rb
+++ b/logic/helpers/hash.rb
@@ -4,6 +4,16 @@ module NanoBot
module Logic
module Helpers
module Hash
+ def self.deep_merge(hash1, hash2)
+ hash1.merge(hash2) do |_key, old_val, new_val|
+ if old_val.is_a?(::Hash) && new_val.is_a?(::Hash)
+ deep_merge(old_val, new_val)
+ else
+ new_val
+ end
+ end
+ end
+
def self.symbolize_keys(object)
case object
when ::Hash
@@ -17,6 +27,19 @@ module NanoBot
end
end
+ def self.stringify_keys(object)
+ case object
+ when ::Hash
+ object.each_with_object({}) do |(key, value), result|
+ result[key.to_s] = stringify_keys(value)
+ end
+ when Array
+ object.map { |e| stringify_keys(e) }
+ else
+ object
+ end
+ end
+
def self.fetch(object, path)
node = object