Module: HashHelper::DeepSum

Included in:
Hash, Percentage
Defined in:
lib/hash_helper/deep_sum.rb

Instance Method Summary collapse

Instance Method Details

#deep_sumObject

This method calculates the sum of all numeric values in a nested Hash or Array. It recursively traverses the data structure to find and sum up all numbers.

Examples:

Example with nested hashes and arrays:

hash = {
  a: 1,
  b: { c: 2, d: { e: 3, f: 4 } },
  g: [5, { h: 6, i: { j: 7 } }]
}
hash.deep_sum # => 28


13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/hash_helper/deep_sum.rb', line 13

def deep_sum
  sum do |_, value|
    case value
    when Hash
      value.deep_sum
    when Array
      value.sum { |v| v.is_a?(Hash) ? v.deep_sum : v.to_f }
    else
      value.to_f
    end
  end
end