Sha256: f492b320acdb593c8c64f73d30a066a6033c0f1f205583e7a6c8fd2116b3e859

Contents?: true

Size: 1.2 KB

Versions: 11

Compression:

Stored size: 1.2 KB

Contents

module Diffy
  class SplitDiff
    def initialize(left, right, options = {})
      @format = options[:format] || Diffy::Diff.default_format

      formats = Format.instance_methods(false).map { |x| x.to_s }
      unless formats.include?(@format.to_s)
        fail ArgumentError, "Format #{format.inspect} is not a valid format"
      end

      @diff = Diffy::Diff.new(left, right, options).to_s(@format)
      @left_diff, @right_diff = split
    end

    %w(left right).each do |direction|
      define_method direction do
        instance_variable_get("@#{direction}_diff")
      end
    end

    private

    def split
      [split_left, split_right]
    end

    def split_left
      case @format
      when :color
        @diff.gsub(/\033\[32m\+(.*)\033\[0m\n/, '')
      when :html, :html_simple
        @diff.gsub(%r{\s+<li class="ins"><ins>(.*)</ins></li>}, '')
      when :text
        @diff.gsub(/^\+(.*)\n/, '')
      end
    end

    def split_right
      case @format
      when :color
        @diff.gsub(/\033\[31m\-(.*)\033\[0m\n/, '')
      when :html, :html_simple
        @diff.gsub(%r{\s+<li class="del"><del>(.*)</del></li>}, '')
      when :text
        @diff.gsub(/^-(.*)\n/, '')
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
diffy-3.4.3 lib/diffy/split_diff.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/diffy-3.4.2/lib/diffy/split_diff.rb
ydiffy-0.0.3 lib/diffy/split_diff.rb
diffy-3.4.2 lib/diffy/split_diff.rb
diffy-3.4.1 lib/diffy/split_diff.rb
diffy-3.4.0 lib/diffy/split_diff.rb
diffy-3.3.0 lib/diffy/split_diff.rb
diffy-3.2.1 lib/diffy/split_diff.rb
ydiffy-0.0.2 lib/diffy/split_diff.rb
diffy-3.2.0 lib/diffy/split_diff.rb
diffy-3.1.0 lib/diffy/split_diff.rb