Class: PaperTrailDiff::ActivityEventRegistry
- Inherits:
-
Object
- Object
- PaperTrailDiff::ActivityEventRegistry
- 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
-
#add(versions, branch: nil) ⇒ void
: (Array, ?branch: String?) -> void.
-
#initialize ⇒ ActivityEventRegistry
constructor
A new instance of ActivityEventRegistry.
-
#merged_branches(existing, branch) ⇒ Array[String]?
: (Hash[Symbol, untyped]?, String?) -> Array?.
-
#to_a ⇒ Array[ActivityEvent]
: () -> Array.
Constructor Details
#initialize ⇒ ActivityEventRegistry
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
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?
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_a ⇒ Array[ActivityEvent]
: () -> Array
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 |