Class: Serega::SeregaUtils::AsJSON

Inherits:
Object
  • Object
show all
Defined in:
lib/serega/utils/as_json.rb

Constant Summary collapse

DOUBLE_QUOTE =
'"'

Class Method Summary collapse

Class Method Details

.call(data, to_json:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/serega/utils/as_json.rb', line 9

def call(data, to_json:)
  case data
  when Hash
    data.each_with_object({}) do |(key, value), new_data|
      new_key = key.to_s
      new_value = call(value, to_json: to_json)
      new_data[new_key] = new_value
    end
  when Array
    data.map { |value| call(value, to_json: to_json) }
  when NilClass, Integer, Float, String, TrueClass, FalseClass
    data
  when Symbol
    data.to_s
  else
    res = to_json.call(data)
    if res.start_with?(DOUBLE_QUOTE) && res.end_with?(DOUBLE_QUOTE)
      res.delete_prefix!(DOUBLE_QUOTE)
      res.delete_suffix!(DOUBLE_QUOTE)
    end
    res
  end
end