Sha256: c12a44b00456b2bda4cbd20fe42e39a55721c3323b6af867eb8b2a6a05c58947
Contents?: true
Size: 1.41 KB
Versions: 5
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true 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 object.each_with_object({}) do |(key, value), result| result[key.to_sym] = symbolize_keys(value) end when Array object.map { |e| symbolize_keys(e) } else object 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 return nil unless node path.each do |key| unless node.is_a?(::Hash) node = nil break end node = node[key] break if node.nil? end node end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems