Sha256: e54638d177edfbefb977cf6edac1b3d07ed40e9abd9718f7022bedcd16b2e588
Contents?: true
Size: 1.88 KB
Versions: 24
Compression:
Stored size: 1.88 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, :summary_omits_content?, 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] return unless new_version lcs_opts = lcs_opts_for_format opts[:diff_format] LCS.new(lcs_opts).run(old_version, new_version, @result) end def red? @result.dels_cnt.positive? end def green? @result.adds_cnt.positive? 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("]]", "<br>") } else # :raw opts[:preprocess] = proc { |word| CGI.escapeHTML(word) } end opts end end end end
Version data entries
24 entries across 24 versions & 1 rubygems
Version | Path |
---|---|
card-1.101.7 | lib/card/content/diff.rb |
card-1.102.0 | lib/card/content/diff.rb |
card-1.101.6 | lib/card/content/diff.rb |
card-1.101.5 | lib/card/content/diff.rb |