Class: Eco::Data::Hashes::ArrayDiff
- Inherits:
-
Object
- Object
- Eco::Data::Hashes::ArrayDiff
- Extended by:
- Language::Models::ClassHelpers
- Includes:
- Language::AuxiliarLogger
- Defined in:
- lib/eco/data/hashes/array_diff.rb
Constant Summary
Constants included from Language::Models::ClassHelpers
Language::Models::ClassHelpers::NOT_USED
Instance Attribute Summary collapse
-
#source1 ⇒ Object
readonly
Returns the value of attribute source1.
-
#source2 ⇒ Object
readonly
Returns the value of attribute source2.
-
#src_h1 ⇒ Object
readonly
Returns the value of attribute src_h1.
-
#src_h2 ⇒ Object
readonly
Returns the value of attribute src_h2.
Attributes included from Language::AuxiliarLogger
Class Method Summary collapse
- .case_sensitive(value = nil) ⇒ Object
- .case_sensitive? ⇒ Boolean
- .compare(*attrs) ⇒ Object
- .compared_attrs ⇒ Object
- .key(value = nil) ⇒ Object
- .key? ⇒ Boolean
Instance Method Summary collapse
-
#diffs ⇒ Hash
Where
keyis the key of the record, andvalueaDiffResultobject. -
#diffs? ⇒ Boolean
Wheter or not there are differences.
-
#initialize(source1, source2, logger: nil, **kargs) ⇒ ArrayDiff
constructor
A new instance of ArrayDiff.
- #source_results ⇒ Object
Methods included from Language::Models::ClassHelpers
class_resolver, inheritable_attrs, inheritable_class_vars, inherited, instance_variable_name, new_class, redef_without_warning, resolve_class, to_constant, used_param?
Methods included from Language::AuxiliarLogger
Constructor Details
#initialize(source1, source2, logger: nil, **kargs) ⇒ ArrayDiff
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/eco/data/hashes/array_diff.rb', line 44 def initialize(source1, source2, logger: nil, **kargs) @logger = logger if logger = kargs @source1 = source1 @source2 = source2 @src_h1 = by_key(source1) @src_h2 = by_key(source2) raise "Missing source1" unless !!self.src_h1 raise "Missing source2" unless !!self.src_h2 end |
Instance Attribute Details
#source1 ⇒ Object (readonly)
Returns the value of attribute source1.
39 40 41 |
# File 'lib/eco/data/hashes/array_diff.rb', line 39 def source1 @source1 end |
#source2 ⇒ Object (readonly)
Returns the value of attribute source2.
39 40 41 |
# File 'lib/eco/data/hashes/array_diff.rb', line 39 def source2 @source2 end |
#src_h1 ⇒ Object (readonly)
Returns the value of attribute src_h1.
40 41 42 |
# File 'lib/eco/data/hashes/array_diff.rb', line 40 def src_h1 @src_h1 end |
#src_h2 ⇒ Object (readonly)
Returns the value of attribute src_h2.
40 41 42 |
# File 'lib/eco/data/hashes/array_diff.rb', line 40 def src_h2 @src_h2 end |
Class Method Details
.case_sensitive(value = nil) ⇒ Object
21 22 23 24 25 |
# File 'lib/eco/data/hashes/array_diff.rb', line 21 def case_sensitive(value = nil) @case_sensitive = false unless instance_variable_defined?(:@case_sensitive) return @case_sensitive unless value @case_sensitive = !!value end |
.case_sensitive? ⇒ Boolean
27 28 29 |
# File 'lib/eco/data/hashes/array_diff.rb', line 27 def case_sensitive? !!@case_sensitive end |
.compare(*attrs) ⇒ Object
17 18 19 |
# File 'lib/eco/data/hashes/array_diff.rb', line 17 def compare(*attrs) compared_attrs.push(*attrs.map(&:to_s)).uniq! end |
.compared_attrs ⇒ Object
31 32 33 34 |
# File 'lib/eco/data/hashes/array_diff.rb', line 31 def compared_attrs @compared_attrs ||= [] @compared_attrs end |
.key(value = nil) ⇒ Object
8 9 10 11 |
# File 'lib/eco/data/hashes/array_diff.rb', line 8 def key(value = nil) return @key unless value @key = value.to_s end |
.key? ⇒ Boolean
13 14 15 |
# File 'lib/eco/data/hashes/array_diff.rb', line 13 def key? !!@key end |
Instance Method Details
#diffs ⇒ Hash
Note:
- A
Hash::DiffResultobject, offershash_diffwith the attrs that have changed value - It also allows to know the original value
Returns where key is the key of the record, and value a DiffResult object.
59 60 61 62 63 |
# File 'lib/eco/data/hashes/array_diff.rb', line 59 def diffs @diffs ||= source_results.select do |res| res.diff? end end |
#diffs? ⇒ Boolean
66 67 68 |
# File 'lib/eco/data/hashes/array_diff.rb', line 66 def diffs? !diffs.empty? end |
#source_results ⇒ Object
70 71 72 73 74 75 76 77 78 79 |
# File 'lib/eco/data/hashes/array_diff.rb', line 70 def source_results @source_results ||= paired_sources.each_with_object([]) do |(src1, src2), res| args = { key: key, compare: compared_attrs, case_sensitive: case_sensitive? } res << diff_result_class.new(src1, src2, **args) end end |