class JsonUpdater::JsonFullBuilder
Attributes
json_changeable[R]
json_etalon[R]
Public Class Methods
build(json_changeable:, json_etalon:)
click to toggle source
# File lib/json_updater/json_full_builder.rb, line 7 def self.build(json_changeable:, json_etalon:) new(json_changeable: json_changeable, json_etalon: json_etalon).build end
new(json_changeable:, json_etalon:)
click to toggle source
# File lib/json_updater/json_full_builder.rb, line 11 def initialize(json_changeable:, json_etalon:) @json_changeable = json_changeable @json_etalon = json_etalon end
Public Instance Methods
build()
click to toggle source
# File lib/json_updater/json_full_builder.rb, line 16 def build recursion_updation(json_changeable, json_etalon) end
Private Instance Methods
dive_inside(mutation_field_value, etalon_field_value)
click to toggle source
# File lib/json_updater/json_full_builder.rb, line 31 def dive_inside(mutation_field_value, etalon_field_value) return etalon_field_value unless hash_or_array?(mutation_field_value) case etalon_field_value when Hash recursion_updation(mutation_field_value, etalon_field_value) when Array mutation_field_value.map { |hash| recursion_updation(hash, etalon_field_value.first) } end end
hash_or_array?(etalon_field_value)
click to toggle source
this method smells of :reek:UtilityFunction
# File lib/json_updater/json_full_builder.rb, line 43 def hash_or_array?(etalon_field_value) [Hash, Array].include?(etalon_field_value.class) end
recursion_updation(mutation_json, inner_json_etalon)
click to toggle source
# File lib/json_updater/json_full_builder.rb, line 22 def recursion_updation(mutation_json, inner_json_etalon) inner_json_etalon.each do |etalon_field_key, etalon_field_value| if hash_or_array?(etalon_field_value) mutation_json[etalon_field_key] = dive_inside(mutation_json[etalon_field_key], etalon_field_value) end end JsonTypeDetector.detect_type(mutation_json).build(json_changeable: mutation_json, json_etalon: inner_json_etalon) end