Module: SportsManager::JsonHelper

Included in:
TournamentSolution::Serializer
Defined in:
lib/sports_manager/json_helper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.convert_custom_object(object) ⇒ Object



42
43
44
45
46
47
# File 'lib/sports_manager/json_helper.rb', line 42

def self.convert_custom_object(object)
  object.instance_variables.each_with_object({}) do |var, hash|
    key = var.to_s.delete('@').to_sym
    hash[key] = convert_value(object.instance_variable_get(var))
  end
end

.convert_value(value) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/sports_manager/json_helper.rb', line 31

def self.convert_value(value)
  case value
  when Hash
    value.transform_keys(&:to_sym).transform_values { |v| convert_value(v) }
  when Array
    value.map { |v| convert_value(v) }
  else
    value.respond_to?(:as_json) ? value.as_json : value
  end
end

.deep_symbolize_keys(object) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sports_manager/json_helper.rb', line 13

def self.deep_symbolize_keys(object)
  case object
  when Hash
    object.each_with_object({}) do |(k, v), result|
      key = begin
        k.to_sym
      rescue StandardError
        k
      end
      result[key] = deep_symbolize_keys(v)
    end
  when Array
    object.map { |v| deep_symbolize_keys(v) }
  else
    object
  end
end

Instance Method Details

#as_json(_options = nil) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/sports_manager/json_helper.rb', line 5

def as_json(_options = nil)
  instance_variables.each_with_object({}) do |var, hash|
    key = var.to_s.delete('@').to_sym
    value = instance_variable_get(var)
    hash[key] = JsonHelper.convert_value(value)
  end
end