Class: Keepasser::Comparator
- Inherits:
-
Object
- Object
- Keepasser::Comparator
- Defined in:
- lib/keepasser/comparator.rb
Instance Attribute Summary collapse
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
Instance Method Summary collapse
-
#initialize(left, right) ⇒ Comparator
constructor
A new instance of Comparator.
- #to_s ⇒ Object
Constructor Details
#initialize(left, right) ⇒ Comparator
Returns a new instance of Comparator.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/keepasser/comparator.rb', line 5 def initialize left, right parsers = [Parser.new(left), Parser.new(right)] @errors = {} parsers[0].keys.each do |group| missing = [] left = parsers[0][group].keys - parsers[1][group].keys left.map { |entry| parsers[0][group].delete entry } right = parsers[1][group].keys - parsers[0][group].keys missing += right.map { |e| { e => parsers[1][group][e].fields } } right.map { |entry| parsers[1][group].delete entry } if missing.any? begin @errors['Missing entries'][group] = missing.clone rescue NoMethodError @errors['Missing entries'] = {} @errors['Missing entries'][group] = missing.clone end end end parsers[0].each_pair do |group, entries| entries.each_pair do |title, data| if data.fields != parsers[1][group][title].fields @errors['Different data'] = {} @errors['Different data'][group] = {} @errors['Different data'][group][title] = {} data.fields.each_pair do |key, value| other_value = parsers[1][group][title].fields[key] if value != parsers[1][group][title].fields[key] @errors['Different data'][group][title][key] = [value, other_value] end end end end end end |
Instance Attribute Details
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
3 4 5 |
# File 'lib/keepasser/comparator.rb', line 3 def errors @errors end |
Instance Method Details
#to_s ⇒ Object
46 47 48 |
# File 'lib/keepasser/comparator.rb', line 46 def to_s @errors.to_yaml end |