Class: Markdiff::Operations::TextDiffOperation

Inherits:
Base
  • Object
show all
Defined in:
lib/markdiff/operations/text_diff_operation.rb

Instance Attribute Summary

Attributes inherited from Base

#target_node

Instance Method Summary collapse

Constructor Details

#initialize(after_node:, **args) ⇒ TextDiffOperation

Returns a new instance of TextDiffOperation.

Parameters:

  • after_node (Nokogiri::XML::Node)


9
10
11
12
# File 'lib/markdiff/operations/text_diff_operation.rb', line 9

def initialize(after_node:, **args)
  super(**args)
  @after_node = after_node
end

Instance Method Details

#inserted_nodeNokogiri::XML::Node

Returns:

  • (Nokogiri::XML::Node)


15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/markdiff/operations/text_diff_operation.rb', line 15

def inserted_node
  before_elements = target_node.to_s.split(" ")
  after_elements = @after_node.to_s.split(" ")
  ::Diff::LCS.diff(before_elements, after_elements).flatten.each do |operation|
    type, position, element = *operation
    if type == "-"
      before_elements[position] = "<del>#{element}</del>"
    else
      before_elements[position] = "#{before_elements[position]}<ins>#{element}</ins>"
    end
  end
  ::Nokogiri::HTML.fragment(before_elements.join(" "))
end

#priorityObject



29
30
31
# File 'lib/markdiff/operations/text_diff_operation.rb', line 29

def priority
  1
end