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
- .deep_dup(value) ⇒ Object
- .deep_merge(original, overrides) ⇒ Object
- .deep_stringify_keys(value) ⇒ Object
- .deep_symbolize_keys(value) ⇒ Object
- .hash_get(hash, key) ⇒ Object
- .to_date(value) ⇒ Object
- .to_safe_array(item) ⇒ Object
- .to_time(value) ⇒ Object
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 |