Class: BabelDiff::YamlDiffer
- Inherits:
-
Struct
- Object
- Struct
- BabelDiff::YamlDiffer
- Defined in:
- lib/babel_diff/yaml_differ.rb
Instance Attribute Summary collapse
-
#current_version ⇒ Object
Returns the value of attribute current_version.
-
#previous_version ⇒ Object
Returns the value of attribute previous_version.
Instance Method Summary collapse
- #add_key_to_additions(keys, value) ⇒ Object
- #add_key_to_updates(keys, value) ⇒ Object
- #additions ⇒ Object
- #previous_version_is_missing_key?(keys) ⇒ Boolean
- #previous_version_value_is_different?(keys, value) ⇒ Boolean
- #process_difference(current_hash, keys = []) ⇒ Object
- #updates ⇒ Object
Instance Attribute Details
#current_version ⇒ Object
Returns the value of attribute current_version
5 6 7 |
# File 'lib/babel_diff/yaml_differ.rb', line 5 def current_version @current_version end |
#previous_version ⇒ Object
Returns the value of attribute previous_version
5 6 7 |
# File 'lib/babel_diff/yaml_differ.rb', line 5 def previous_version @previous_version end |
Instance Method Details
#add_key_to_additions(keys, value) ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/babel_diff/yaml_differ.rb', line 61 def add_key_to_additions(keys, value) current_value = additions_hash keys[0...-1].each do |key| current_value = current_value[key] ||= {} end current_value[keys.last] = value end |
#add_key_to_updates(keys, value) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/babel_diff/yaml_differ.rb', line 53 def add_key_to_updates(keys, value) current_value = updates_hash keys[0...-1].each do |key| current_value = current_value[key] ||= {} end current_value[keys.last] = value end |
#additions ⇒ Object
12 13 14 15 16 |
# File 'lib/babel_diff/yaml_differ.rb', line 12 def additions process_difference(current_version_hash) unless @processed @processed = true additions_hash.to_yaml end |
#previous_version_is_missing_key?(keys) ⇒ Boolean
34 35 36 37 38 39 40 41 42 |
# File 'lib/babel_diff/yaml_differ.rb', line 34 def previous_version_is_missing_key?(keys) current_value = previous_version_hash keys.each do |key| current_value = current_value[key] return true if current_value.nil? end return false end |
#previous_version_value_is_different?(keys, value) ⇒ Boolean
44 45 46 47 48 49 50 51 |
# File 'lib/babel_diff/yaml_differ.rb', line 44 def previous_version_value_is_different?(keys, value) current_value = previous_version_hash keys.each do |key| current_value = current_value[key] end return current_value != value end |
#process_difference(current_hash, keys = []) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/babel_diff/yaml_differ.rb', line 18 def process_difference(current_hash, keys = []) current_hash.each do |key, value| keys << key if value.is_a? Hash process_difference(value, keys) else if previous_version_is_missing_key?(keys) add_key_to_additions(keys, value) elsif previous_version_value_is_different?(keys, value) add_key_to_updates(keys, value) end end keys.pop end end |
#updates ⇒ Object
6 7 8 9 10 |
# File 'lib/babel_diff/yaml_differ.rb', line 6 def updates process_difference(current_version_hash) unless @processed @processed = true updates_hash.to_yaml end |