class Markdiff::Operations::TextDiffOperation

Public Class Methods

new(after_node:, **args) click to toggle source

@param [Nokogiri::XML::Node] after_node

Calls superclass method Markdiff::Operations::Base::new
# File lib/markdiff/operations/text_diff_operation.rb, line 9
def initialize(after_node:, **args)
  super(**args)
  @after_node = after_node
end

Public Instance Methods

inserted_node() click to toggle source

@return [Nokogiri::XML::Node]

# 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(1).each do |operation|
    type, position, element = *operation
    if type == "-"
      before_elements[position] = %(<del class="del">#{element}</del>)
    else
      before_elements[position] = "#{before_elements[position]}<ins>#{element}</ins>"
    end
  end
  ::Nokogiri::HTML.fragment(before_elements.join(" "))
end
priority() click to toggle source
# File lib/markdiff/operations/text_diff_operation.rb, line 29
def priority
  1
end