Sha256: 5542e9f82b2b36127d508f8584d25b91c4eb2d82c870861317b58c97a9338c0b
Contents?: true
Size: 1.84 KB
Versions: 3
Compression:
Stored size: 1.84 KB
Contents
# -*- encoding : utf-8 -*- class Card class Content class Diff class << self def complete a, b, opts={} Card::Content::Diff.new(a, b, opts).complete end def summary a, b, opts={} Card::Content::Diff.new(a, b, opts).summary end def render_added_chunk text "<ins class='diffins diff-added'>#{text}</ins>" end def render_deleted_chunk text, _count=true "<del class='diffdel diff-deleted'>#{text}</del>" end end attr_reader :result delegate :summary, :complete, to: :result # 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> } def initialize old_version, new_version, opts={} @result = Result.new opts[:summary] if new_version lcs_opts = lcs_opts_for_format opts[:diff_format] LCS.new(lcs_opts).run(old_version, new_version, @result) end end def red? @result.dels_cnt > 0 end def green? @result.adds_cnt > 0 end private 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("]]", "") } else # :raw opts[:preprocess] = proc { |word| CGI.escapeHTML(word) } end opts end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
card-1.19.6 | lib/card/content/diff.rb |
card-1.19.5 | lib/card/content/diff.rb |
card-1.19.4 | lib/card/content/diff.rb |