Module: SportsManager::JsonHelper
- Included in:
- TournamentSolution::Serializer
- Defined in:
- lib/sports_manager/json_helper.rb
Class Method Summary collapse
- .convert_custom_object(object) ⇒ Object
- .convert_value(value) ⇒ Object
- .deep_symbolize_keys(object) ⇒ Object
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( = 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 |