Module: AgUiProtocol::Util

Extended by:
T::Sig
Defined in:
lib/ag_ui_protocol/util.rb

Overview

Utility methods for encoding events.

Class Method Summary collapse

Class Method Details

.camelize_key(key) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/ag_ui_protocol/util.rb', line 27

def camelize_key(key)
  str = key.to_s
  parts = str.split("_")
  return str if parts.length <= 1

  parts[0] + parts[1..].map { |p| p.empty? ? "" : (p[0].upcase + p[1..]) }.join
end

.deep_compact(value) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ag_ui_protocol/util.rb', line 38

def deep_compact(value)
  value = normalize_value(value)
  case value
  when Hash
    value.transform_values { |v| deep_compact(v) unless v.nil? }.tap(&:compact!)
  when Array
    tmp1 = value.map { |v| deep_compact(v) }
    tmp1.reject!(&:nil?)
    tmp1
  else
    value
  end
end

.deep_transform_keys_to_camel(value) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/ag_ui_protocol/util.rb', line 55

def deep_transform_keys_to_camel(value)
  value = normalize_value(value)
  case value
  when Hash
    value.each_with_object({}) do |(k, v), acc|
      acc[camelize_key(k)] = deep_transform_keys_to_camel(v)
    end
  when Array
    value.map { |v| deep_transform_keys_to_camel(v) }
  else
    value
  end
end

.dump_json(value) ⇒ Object



72
73
74
# File 'lib/ag_ui_protocol/util.rb', line 72

def dump_json(value)
  JSON.generate(value)
end

.normalize_value(value) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/ag_ui_protocol/util.rb', line 16

def normalize_value(value)
  if value.is_a?(AgUiProtocol::Core::Types::Model)
    value.to_h
  else
    value
  end
end