Class: R2OAS::Schema::V3::BaseHashDiffManager

Inherits:
BaseDiffManager show all
Includes:
R2OAS::Sortable
Defined in:
lib/r2-oas/schema/v3/manager/diff/base_hash_diff_manager.rb

Direct Known Subclasses

ComponentsDiffManager

Constant Summary

Constants inherited from Base

R2OAS::Schema::V3::Base::SUPPORT_COMPONENTS_OBJECTS

Instance Method Summary collapse

Methods included from R2OAS::Sortable

#deep_sort

Methods inherited from Base

#support_components_objects

Constructor Details

#initialize(before_schema_data, after_schema_data) ⇒ BaseHashDiffManager

Returns a new instance of BaseHashDiffManager.



11
12
13
14
15
# File 'lib/r2-oas/schema/v3/manager/diff/base_hash_diff_manager.rb', line 11

def initialize(before_schema_data, after_schema_data)
  super
  @major_category     = 'base'
  @middle_category    = 'middle'
end

Instance Method Details

#process_by_using_diff_dataObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/r2-oas/schema/v3/manager/diff/base_hash_diff_manager.rb', line 17

def process_by_using_diff_data
  before_target_data       = sorted_target_data(@before_schema_data)
  before_target_data_names = before_target_data.keys.uniq
  after_target_data        = sorted_target_data(@after_schema_data)
  after_target_data_names  = after_target_data.keys.uniq
  target_names             = (before_target_data_names + after_target_data_names).uniq

  target_names.each do |target_name|
    before_schema_data = schema_data_at(before_target_data, target_name)
    after_schema_data = schema_data_at(after_target_data, target_name)

    removed, added = before_schema_data.easy_diff(after_schema_data)
    leftovers, = before_schema_data.easy_diff(removed)

    is_removed   = to_boolean(removed, target_name)
    is_added     = to_boolean(added, target_name)
    is_leftovers = to_boolean(leftovers, target_name)

    yield(target_name, is_removed, is_added, is_leftovers, after_schema_data) if block_given?
  end

  nil
end