2013-02-26 00:42:20 +08:00
|
|
|
# This class is used to generate diffs, it will be consumed by the UI on
|
2013-02-23 13:30:02 +08:00
|
|
|
# on the client the displays diffs.
|
|
|
|
#
|
2013-03-16 08:31:51 +08:00
|
|
|
# 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
|
2013-02-23 13:30:02 +08:00
|
|
|
|
|
|
|
class DiffEngine
|
2013-02-26 00:42:20 +08:00
|
|
|
|
2013-03-16 08:31:51 +08:00
|
|
|
# generate an html friendly diff similar to the way Stack Exchange generates
|
|
|
|
# html diffs
|
2013-02-23 13:30:02 +08:00
|
|
|
#
|
2013-03-06 15:52:24 +08:00
|
|
|
# returns: html containing decorations indicating the changes
|
2013-02-23 13:30:02 +08:00
|
|
|
def self.html_diff(html_before, html_after)
|
2013-03-16 08:31:51 +08:00
|
|
|
Diffy::Diff.new(html_before, html_after).to_s(:html)
|
2013-02-23 13:30:02 +08:00
|
|
|
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)
|
2013-03-16 08:31:51 +08:00
|
|
|
Diffy::Diff.new(markdown_before, markdown_after).to_s(:html)
|
2013-02-23 13:30:02 +08:00
|
|
|
end
|
|
|
|
end
|