Module: LlmCostTracker::ValueHelpers

Defined in:
lib/llm_cost_tracker/value_helpers.rb

Class Method Summary collapse

Class Method Details

.deep_dup(value) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/llm_cost_tracker/value_helpers.rb', line 6

def deep_dup(value)
  case value
  when Hash
    value.each_with_object({}) do |(key, nested_value), duplicated|
      duplicated[deep_dup(key)] = deep_dup(nested_value)
    end
  when Array
    value.map { |nested_value| deep_dup(nested_value) }
  when String
    value.dup
  else
    value
  end
end

.deep_freeze(value) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/llm_cost_tracker/value_helpers.rb', line 21

def deep_freeze(value)
  case value
  when Hash
    value.each do |key, nested_value|
      deep_freeze(key)
      deep_freeze(nested_value)
    end
    value.frozen? ? value : value.freeze
  when Array
    value.each { |nested_value| deep_freeze(nested_value) }
    value.frozen? ? value : value.freeze
  when String
    value.frozen? ? value : value.freeze
  else
    value
  end
end