module ChgkRating::AttributeMappings
Public Class Methods
find(name)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 6 def find(name) const_get name.snakecase_upcase end
generate_mappings_for(data)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 10 def generate_mappings_for(data) data.each do |const_name, raw_schemes| const_set const_name, generate_mapping_for(raw_schemes) end end
Private Class Methods
generate_mapping_for(raw_schemes)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 46 def generate_mapping_for(raw_schemes) return unless raw_schemes&.any? if raw_schemes.is_a? Array raw_schemes.inject({}) do |memo, raw_scheme| memo.merge parse_raw_scheme(raw_scheme) end else parse_raw_scheme raw_schemes end.freeze end
name_from(raw_name)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 18 def name_from(raw_name) { raw_name: raw_name.to_s } end
parse_raw_scheme(raw_scheme)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 22 def parse_raw_scheme(raw_scheme) if raw_scheme.respond_to? :inject scheme_from raw_scheme else { raw_scheme => name_from(raw_scheme) } end end
scheme_from(raw_scheme)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 30 def scheme_from(raw_scheme) raw_scheme.inject({}) do |memo, (key, value)| memo[key] = scheme_value_from key, value memo end end
scheme_value_from(key, raw_value)
click to toggle source
# File lib/chgk_rating/attribute_mappings.rb, line 37 def scheme_value_from(key, raw_value) if raw_value.is_a? String name_from raw_value else raw_value = [key.to_s] if raw_value[0].nil? # for cases like `rating: []` name_from(raw_value[0]).merge transformation(raw_value[1]) end end