class Convergence::PrettyDiff

Public Class Methods

new(from_tables, to_tables) click to toggle source
# File lib/convergence/pretty_diff.rb, line 6
def initialize(from_tables, to_tables)
  @from_tables = from_tables
  @to_tables = to_tables
end

Public Instance Methods

output() click to toggle source
# File lib/convergence/pretty_diff.rb, line 11
def output
  diff = Convergence::Diff.new.diff(@from_tables, @to_tables)
  add_tables = diff[:add_table].keys
  remove_tables = diff[:remove_table].keys
  change_tables = diff[:change_table].keys

  results = ''
  add_tables.each do |table_name|
    results += diff_add_table(table_name)
    results += "\n\n"
  end
  remove_tables.each do |table_name|
    results += diff_remove_table(table_name)
    results += "\n\n"
  end
  change_tables.each do |table_name|
    results += diff_change_table(table_name)
  end
  results
end

Private Instance Methods

diff_add_table(table_name) click to toggle source
# File lib/convergence/pretty_diff.rb, line 34
def diff_add_table(table_name)
  Convergence::Dumper
    .new
    .dump_table_dsl(@to_tables[table_name])
    .split("\n")
    .map { |v| "+ #{v}" }
    .join("\n")
end
diff_change_table(table_name) click to toggle source
# File lib/convergence/pretty_diff.rb, line 52
def diff_change_table(table_name)
  from = Convergence::Dumper.new.dump_table_dsl(@from_tables[table_name]) + "\n"
  to = Convergence::Dumper.new.dump_table_dsl(@to_tables[table_name]) + "\n"
  Diffy::Diff.new(from, to).to_s
end
diff_remove_table(table_name) click to toggle source
# File lib/convergence/pretty_diff.rb, line 43
def diff_remove_table(table_name)
  Convergence::Dumper
    .new
    .dump_table_dsl(@from_tables[table_name])
    .split("\n")
    .map { |v| "- #{v}" }
    .join("\n")
end