Class: Evilution::Session::Diff

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/session/diff.rb

Defined Under Namespace

Classes: Result, SummaryDiff

Instance Method Summary collapse

Instance Method Details

#call(base_data, head_data) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/evilution/session/diff.rb', line 38

def call(base_data, head_data)
  base_survivors = base_data["survived"] || []
  head_survivors = head_data["survived"] || []

  base_keys = base_survivors.to_set { |m| mutation_key(m) }
  head_keys = head_survivors.to_set { |m| mutation_key(m) }

  Result.new(
    summary: build_summary_diff(base_data, head_data),
    fixed: base_survivors.reject { |m| head_keys.include?(mutation_key(m)) },
    new_survivors: head_survivors.reject { |m| base_keys.include?(mutation_key(m)) },
    persistent: head_survivors.select { |m| base_keys.include?(mutation_key(m)) }
  )
end