Module: RubyLLM::Utils

Defined in:
lib/ruby_llm/utils.rb

Overview

Provides utility functions for data manipulation within the RubyLLM library

Class Method Summary collapse

Class Method Details

.deep_dup(value) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ruby_llm/utils.rb', line 45

def deep_dup(value)
  case value
  when Hash
    value.each_with_object({}) do |(key, val), duped|
      duped[deep_dup(key)] = deep_dup(val)
    end
  when Array
    value.map { |item| deep_dup(item) }
  else
    begin
      value.dup
    rescue TypeError
      value
    end
  end
end

.deep_merge(original, overrides) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/ruby_llm/utils.rb', line 35

def deep_merge(original, overrides)
  original.merge(overrides) do |_key, original_value, overrides_value|
    if original_value.is_a?(Hash) && overrides_value.is_a?(Hash)
      deep_merge(original_value, overrides_value)
    else
      overrides_value
    end
  end
end

.deep_stringify_keys(value) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/ruby_llm/utils.rb', line 62

def deep_stringify_keys(value)
  case value
  when Hash
    value.each_with_object({}) do |(key, val), result|
      result[key.to_s] = deep_stringify_keys(val)
    end
  when Array
    value.map { |item| deep_stringify_keys(item) }
  when Symbol
    value.to_s
  else
    value
  end
end

.deep_symbolize_keys(value) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/ruby_llm/utils.rb', line 77

def deep_symbolize_keys(value)
  case value
  when Hash
    value.each_with_object({}) do |(key, val), result|
      symbolized_key = key.respond_to?(:to_sym) ? key.to_sym : key
      result[symbolized_key] = deep_symbolize_keys(val)
    end
  when Array
    value.map { |item| deep_symbolize_keys(item) }
  else
    value
  end
end

.hash_get(hash, key) ⇒ Object



8
9
10
# File 'lib/ruby_llm/utils.rb', line 8

def hash_get(hash, key)
  hash[key.to_sym] || hash[key.to_s]
end

.to_date(value) ⇒ Object



29
30
31
32
33
# File 'lib/ruby_llm/utils.rb', line 29

def to_date(value)
  return unless value

  value.is_a?(Date) ? value : Date.parse(value.to_s)
end

.to_safe_array(item) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/ruby_llm/utils.rb', line 12

def to_safe_array(item)
  case item
  when Array
    item
  when Hash
    [item]
  else
    Array(item)
  end
end

.to_time(value) ⇒ Object



23
24
25
26
27
# File 'lib/ruby_llm/utils.rb', line 23

def to_time(value)
  return unless value

  value.is_a?(Time) ? value : Time.parse(value.to_s)
end