module Flows::Util::InheritableSingletonVars::DupStrategy::Migrator

@api private

Public Class Methods

call(src_mod, dst_mod) click to toggle source

:reek: TooManyStatements is allowed here because it's impossible to split to smaller methods

# File lib/flows/util/inheritable_singleton_vars/dup_strategy.rb, line 28
def self.call(src_mod, dst_mod)
  parent_var_list = src_mod.instance_variable_get(VAR_LIST_VAR_NAME)
  child_var_list = dst_mod.instance_variable_get(VAR_LIST_VAR_NAME) || []
  skip_list = parent_var_list & child_var_list

  dst_mod.instance_variable_set(VAR_LIST_VAR_NAME, (child_var_list + parent_var_list).uniq)

  (parent_var_list - skip_list).each do |name|
    dst_mod.instance_variable_set(name, src_mod.instance_variable_get(name).dup)
  end
end