Class: Crm::ArticleRevisionDiffRowComponent::KeyedDiff

Inherits:
Object
  • Object
show all
Defined in:
app/components/crm/article_revision_diff_row_component/keyed_diff.rb

Overview

Uses Hashdiff to classify stable-key Article data as added or removed.

Instance Method Summary collapse

Constructor Details

#initialize(current:, proposed:) ⇒ KeyedDiff

Returns a new instance of KeyedDiff.

Parameters:

  • current (Hash)

    current revision values keyed by field

  • proposed (Hash)

    proposed revision values keyed by field



7
8
9
10
# File 'app/components/crm/article_revision_diff_row_component/keyed_diff.rb', line 7

def initialize(current:, proposed:)
  @current = normalize(current)
  @proposed = normalize(proposed)
end

Instance Method Details

#entries(side) ⇒ Array<Array(Object, Symbol)>

Returns each value for one side of the diff paired with its change state.

Parameters:

  • side (Symbol)

    :current or :proposed

Returns:

  • (Array<Array(Object, Symbol)>)

    [value, state] pairs, where state
    is :added, :removed, or :unchanged



17
18
19
20
21
# File 'app/components/crm/article_revision_diff_row_component/keyed_diff.rb', line 17

def entries(side)
  values_for(side).map do |key, value|
    [value, states.fetch(side).fetch(key, :unchanged)]
  end
end