Class: PaperTrailDiff::ActivityEventRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/paper_trail_diff/activity_event.rb,
sig/generated/paper_trail_diff/activity_event.rbs

Overview

Accumulates each version once while retaining every selected root branch.

Instance Method Summary collapse

Constructor Details

#initializeActivityEventRegistry

Returns a new instance of ActivityEventRegistry.



25
26
27
# File 'lib/paper_trail_diff/activity_event.rb', line 25

def initialize
  @events = {} #: Hash[Array[untyped], Hash[Symbol, untyped]]
end

Instance Method Details

#add(versions, branch: nil) ⇒ void

This method returns an undefined value.

: (Array, ?branch: String?) -> void

Parameters:

  • (Array[untyped])
  • branch: (String, nil) (defaults to: nil)


30
31
32
33
34
35
36
37
38
39
# File 'lib/paper_trail_diff/activity_event.rb', line 30

def add(versions, branch: nil)
  versions.each do |version|
    key = [version.class.name, version.id]
    existing = @events[key]
    @events[key] = {
      version: version,
      branches: merged_branches(existing, branch)
    }
  end
end

#merged_branches(existing, branch) ⇒ Array[String]?

: (Hash[Symbol, untyped]?, String?) -> Array?

Parameters:

  • (Hash[Symbol, untyped], nil)
  • (String, nil)

Returns:

  • (Array[String], nil)


56
57
58
59
60
61
62
# File 'lib/paper_trail_diff/activity_event.rb', line 56

def merged_branches(existing, branch)
  return nil if branch.nil?
  return [branch] unless existing
  return nil if existing.fetch(:branches).nil?

  (existing.fetch(:branches) | [branch])
end

#to_aArray[ActivityEvent]

: () -> Array

Returns:



42
43
44
45
46
47
48
49
# File 'lib/paper_trail_diff/activity_event.rb', line 42

def to_a
  @events.values.map do |event|
    ActivityEvent.new(
      version: event.fetch(:version),
      branches: event.fetch(:branches)
    )
  end
end