Module: OmnifocusMcp::Tools::Definitions::KeyNormalizer

Defined in:
lib/omnifocus_mcp/tools/definitions/key_normalizer.rb

Class Method Summary collapse

Class Method Details

.snake_case_key(key) ⇒ Object



21
22
23
24
25
# File 'lib/omnifocus_mcp/tools/definitions/key_normalizer.rb', line 21

def snake_case_key(key)
  return key unless key.is_a?(Symbol) || key.is_a?(String)

  key.to_s.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase.to_sym
end

.snake_keys(obj, deep: false) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/omnifocus_mcp/tools/definitions/key_normalizer.rb', line 8

def snake_keys(obj, deep: false)
  case obj
  when Hash
    obj.each_with_object({}) do |(k, v), out|
      out[snake_case_key(k)] = deep ? snake_keys(v, deep: true) : v
    end
  when Array
    deep ? obj.map { |item| snake_keys(item, deep: true) } : obj
  else
    obj
  end
end