Class: DeltaHash
- Inherits:
-
Object
- Object
- DeltaHash
- Defined in:
- lib/hammer_cli_import/deltahash.rb
Instance Attribute Summary collapse
-
#del ⇒ Object
readonly
Returns the value of attribute del.
-
#new ⇒ Object
readonly
Returns the value of attribute new.
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, val) ⇒ Object
- #changed? ⇒ Boolean
- #delete(key) ⇒ Object
- #delete_value(value) ⇒ Object
-
#initialize(hash) ⇒ DeltaHash
constructor
A new instance of DeltaHash.
- #inspect ⇒ Object
- #to_hash ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(hash) ⇒ DeltaHash
Returns a new instance of DeltaHash.
33 34 35 36 37 |
# File 'lib/hammer_cli_import/deltahash.rb', line 33 def initialize(hash) @old = hash @new = {} @del = Set.new end |
Instance Attribute Details
#del ⇒ Object (readonly)
Returns the value of attribute del.
27 28 29 |
# File 'lib/hammer_cli_import/deltahash.rb', line 27 def del @del end |
#new ⇒ Object (readonly)
Returns the value of attribute new.
26 27 28 |
# File 'lib/hammer_cli_import/deltahash.rb', line 26 def new @new end |
Class Method Details
.[](hash) ⇒ Object
29 30 31 |
# File 'lib/hammer_cli_import/deltahash.rb', line 29 def self.[](hash) new(hash) end |
Instance Method Details
#[](key) ⇒ Object
39 40 41 42 |
# File 'lib/hammer_cli_import/deltahash.rb', line 39 def [](key) return nil if @del.include? key @new[key] || @old[key] end |
#[]=(key, val) ⇒ Object
44 45 46 47 48 |
# File 'lib/hammer_cli_import/deltahash.rb', line 44 def []=(key, val) raise DeltaHashError, 'Key exists' if self[key] @del.delete key @new[key] = val unless @old[key] == val end |
#changed? ⇒ Boolean
82 83 84 |
# File 'lib/hammer_cli_import/deltahash.rb', line 82 def changed? ! (@new.empty? && del.empty?) end |
#delete(key) ⇒ Object
58 59 60 61 62 |
# File 'lib/hammer_cli_import/deltahash.rb', line 58 def delete(key) raise DeltaHashError, "Key #{key} does not exist" unless self[key] @del << key if @old[key] @new.delete(key) end |
#delete_value(value) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/hammer_cli_import/deltahash.rb', line 64 def delete_value(value) deleted = 0 to_hash.each do |k, v| next unless v == value delete(k) deleted += 1 end return deleted end |
#inspect ⇒ Object
78 79 80 |
# File 'lib/hammer_cli_import/deltahash.rb', line 78 def inspect to_hash.inspect end |
#to_hash ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/hammer_cli_import/deltahash.rb', line 50 def to_hash ret = (@old.merge @new) @del.each do |key| ret.delete key end ret end |
#to_s ⇒ Object
74 75 76 |
# File 'lib/hammer_cli_import/deltahash.rb', line 74 def to_s to_hash.to_s end |