Class: PaperTrailDiff::Step

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

Overview

One adjacent transition in a PaperTrail timeline.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(from_version:, to_version:, diff:, captured_at: nil) ⇒ Step

to_version is nil for the one step that closes on current state, which a window reaching past the last recorded version has to do. Read to_boundary instead when a caller may have opted into that. : (from_version: untyped, to_version: untyped, diff: Diff, ?captured_at: untyped) -> void

Parameters:

  • from_version: (Object)
  • to_version: (Object)
  • diff: (Diff)
  • captured_at: (Object) (defaults to: nil)


17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/paper_trail_diff/step.rb', line 17

def initialize(from_version:, to_version:, diff:, captured_at: nil)
  live = Endpoint.record?(to_version)
  @from_version = from_version
  @to_version = (to_version unless live)
  @from_boundary = ActivityBoundary.from_version(from_version)
  @to_boundary = if live
                   ActivityBoundary.current(to_version, captured_at: captured_at)
                 else
                   ActivityBoundary.from_version(to_version)
                 end
  @diff = diff
  freeze
end

Instance Attribute Details

#diffDiff (readonly)

Signature:

  • Diff

Returns:



11
12
13
# File 'lib/paper_trail_diff/step.rb', line 11

def diff
  @diff
end

#from_boundaryActivityBoundary (readonly)

Signature:

  • ActivityBoundary

Returns:



9
10
11
# File 'lib/paper_trail_diff/step.rb', line 9

def from_boundary
  @from_boundary
end

#from_versionObject (readonly)

Signature:

  • untyped

Returns:

  • (Object)


7
8
9
# File 'lib/paper_trail_diff/step.rb', line 7

def from_version
  @from_version
end

#to_boundaryActivityBoundary (readonly)

Signature:

  • ActivityBoundary

Returns:



10
11
12
# File 'lib/paper_trail_diff/step.rb', line 10

def to_boundary
  @to_boundary
end

#to_versionObject (readonly)

Signature:

  • untyped

Returns:

  • (Object)


8
9
10
# File 'lib/paper_trail_diff/step.rb', line 8

def to_version
  @to_version
end

Instance Method Details

#empty?Boolean

: () -> bool

Returns:

  • (Boolean)


32
33
34
# File 'lib/paper_trail_diff/step.rb', line 32

def empty?
  diff.empty?
end

#to_hHash[Symbol, untyped]

: () -> Hash[Symbol, untyped]

Returns:

  • (Hash[Symbol, untyped])


37
38
39
40
41
42
43
44
# File 'lib/paper_trail_diff/step.rb', line 37

def to_h
  {
    from_version_id: from_version.id,
    to_version_id: to_version&.id,
    to_boundary: to_boundary.to_h,
    diff: diff.to_h
  }
end