# This class is used to generate diffs, it will be consumed by the UI on
# on the client the displays diffs.
#
# There are potential performance issues associated with diffing large amounts of completely
# different text, see answer here for optimization if needed
# http://meta.stackoverflow.com/questions/127497/suggested-edit-diff-shows-different-results-depending-upon-mode

class DiffEngine

  # generate an html friendly diff similar to the way Stack Exchange generates
  # html diffs
  #
  #  returns: html containing decorations indicating the changes
  def self.html_diff(html_before, html_after)
    Diffy::Diff.new(html_before, html_after).to_s(:html)
  end

  # same as html diff, except that it operates on markdown
  #
  # returns html containing decorated areas where diff happened
  def self.markdown_diff(markdown_before, markdown_after)
    Diffy::Diff.new(markdown_before, markdown_after).to_s(:html)
  end
end
