Skip to content

Commit

Permalink
Still not entirely happy about this
Browse files Browse the repository at this point in the history
  • Loading branch information
pikesley committed Mar 17, 2018
1 parent d7cd796 commit c6ec08f
Showing 1 changed file with 43 additions and 33 deletions.
76 changes: 43 additions & 33 deletions lib/keepasser/comparator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,54 @@ class Comparator
attr_reader :errors

def initialize left, right
left = Parser.new left
right = Parser.new right
@left = Parser.new left
@right = Parser.new right

@errors = {}

rogue_groups = right.keys - left.keys
if rogue_groups.length > 0
@errors['Rogue groups'] = {}
rogue_groups.map { |r| right[r] }.each do |g|
g.keys.map do |k|
e = g[k]
begin
@errors['Rogue groups'][g[k]['group']][k] = e
rescue NoMethodError
@errors['Rogue groups'][g[k]['group']] = {}
@errors['Rogue groups'][g[k]['group']][k] = e
rogue_groups
missing_entries
different_data
end

def different_data
unless @right == {}
@left.each_pair do |group, entries|
entries.each_pair do |title, data|
if data != @right[group][title]
@errors['Different data'] = {}
@errors['Different data'][group] = {}
@errors['Different data'][group][title] = {}
data.each_pair do |key, value|
other_value = @right[group][title][key]
if value != @right[group][title][key]
@errors['Different data'][group][title][key] = [value, other_value]
end
end
end
end
end
rogue_groups.map { |r| right.delete r }
end
end

left.keys.each do |group|
def missing_entries
@left.keys.each do |group|
missing = []

begin
left_diff = left[group].keys - right[group].keys
left_diff = @left[group].keys - @right[group].keys
rescue NoMethodError => e
left_diff = []
end
left_diff.map { |entry| left[group].delete entry }
left_diff.map { |entry| @left[group].delete entry }

begin
right_diff = right[group].keys - left[group].keys
right_diff = @right[group].keys - @left[group].keys
rescue NoMethodError
right_diff = []
end
missing += right_diff.map { |e| { e => right[group][e] } }
right_diff.map { |entry| right[group].delete entry }
missing += right_diff.map { |e| { e => @right[group][e] } }
right_diff.map { |entry| @right[group].delete entry }

if missing.any?
begin
Expand All @@ -52,23 +61,24 @@ def initialize left, right
end
end
end
end

unless right == {}
left.each_pair do |group, entries|
entries.each_pair do |title, data|
if data != right[group][title]
@errors['Different data'] = {}
@errors['Different data'][group] = {}
@errors['Different data'][group][title] = {}
data.each_pair do |key, value|
other_value = right[group][title][key]
if value != right[group][title][key]
@errors['Different data'][group][title][key] = [value, other_value]
end
end
def rogue_groups
rogue_groups = @right.keys - @left.keys
if rogue_groups.length > 0
@errors['Rogue groups'] = {}
rogue_groups.map { |r| @right[r] }.each do |g|
g.keys.map do |k|
e = g[k]
begin
@errors['Rogue groups'][g[k]['group']][k] = e
rescue NoMethodError
@errors['Rogue groups'][g[k]['group']] = {}
@errors['Rogue groups'][g[k]['group']][k] = e
end
end
end
rogue_groups.map { |r| @right.delete r }
end
end

Expand Down

0 comments on commit c6ec08f

Please sign in to comment.