Sha256: f93611916385db705d149b56b30f10774d03b72cdcc6056f4527bc2170b65a3f

Contents?: true

Size: 1.16 KB

Versions: 89

Compression:

Stored size: 1.16 KB

Contents

module LCSDiff
protected

  # Overwrite show_diff to show diff with colors if Diff::LCS is
  # available.
  def show_diff(destination, content) #:nodoc:
    if diff_lcs_loaded? && ENV["THOR_DIFF"].nil? && ENV["RAILS_DIFF"].nil?
      actual  = File.binread(destination).to_s.split("\n")
      content = content.to_s.split("\n")

      Diff::LCS.sdiff(actual, content).each do |diff|
        output_diff_line(diff)
      end
    else
      super
    end
  end

private

  def output_diff_line(diff) #:nodoc:
    case diff.action
    when "-"
      say "- #{diff.old_element.chomp}", :red, true
    when "+"
      say "+ #{diff.new_element.chomp}", :green, true
    when "!"
      say "- #{diff.old_element.chomp}", :red, true
      say "+ #{diff.new_element.chomp}", :green, true
    else
      say "  #{diff.old_element.chomp}", nil, true
    end
  end

  # Check if Diff::LCS is loaded. If it is, use it to create pretty output
  # for diff.
  def diff_lcs_loaded? #:nodoc:
    return true if defined?(Diff::LCS)
    return @diff_lcs_loaded unless @diff_lcs_loaded.nil?

    @diff_lcs_loaded = begin
      require "diff/lcs"
      true
    rescue LoadError
      false
    end
  end

end

Version data entries

89 entries across 89 versions & 9 rubygems

Version Path
thor-1.3.2 lib/thor/shell/lcs_diff.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/shell/lcs_diff.rb
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/lib/thor/shell/lcs_diff.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/lib/thor/shell/lcs_diff.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/lib/thor/shell/lcs_diff.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/lib/thor/shell/lcs_diff.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
thor-1.3.1 lib/thor/shell/lcs_diff.rb
harbr-0.2.10 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.9 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.8 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.7 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.6 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.5 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.4 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.3 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.2 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.1 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.2.0 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb
harbr-0.1.99 vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/shell/lcs_diff.rb