class Card::Content::Diff
handle comparisons of card content
Attributes
Public Class Methods
Source
# File lib/card/content/diff.rb, line 7 def complete a, b, opts={} Card::Content::Diff.new(a, b, opts).complete end
Source
# File lib/card/content/diff.rb, line 36 def initialize old_version, new_version, opts={} @result = Result.new opts[:summary] return unless new_version lcs_opts = lcs_opts_for_format opts[:diff_format] LCS.new(lcs_opts).run(old_version, new_version, @result) end
diff options :format => :html|:text|:pointer|:raw
:html = maintain html structure, but compare only content :text = remove all html tags; compare plain text :pointer = remove all double square brackets :raw = escape html tags and compare everything
summary: {length: <number> , joint: <string> }
Source
# File lib/card/content/diff.rb, line 15 def render_added_chunk text "<ins class='diffins diff-added'>#{text}</ins>" end
Source
# File lib/card/content/diff.rb, line 19 def render_deleted_chunk text, _count=true "<del class='diffdel diff-deleted'>#{text}</del>" end
Source
# File lib/card/content/diff.rb, line 11 def summary a, b, opts={} Card::Content::Diff.new(a, b, opts).summary end
Public Instance Methods
Private Instance Methods
Source
# File lib/card/content/diff.rb, line 54 def lcs_opts_for_format diff_format opts = {} case diff_format when :html opts[:exclude] = /^</ when :text opts[:reject] = /^</ opts[:postprocess] = proc { |word| word.gsub("\n", "<br>") } when :pointer opts[:preprocess] = proc { |word| word.gsub("[[", "").gsub("]]", "<br>") } else # :raw opts[:preprocess] = proc { |word| CGI.escapeHTML(word) } end opts end