Class: Arborist::Event::NodeDelta
- Inherits:
-
Node
- Object
- Arborist::Event
- Node
- Arborist::Event::NodeDelta
- Includes:
- HashUtilities
- Defined in:
- lib/arborist/event/node_delta.rb
Overview
An event sent when one or more attributes of a node changes.
Instance Attribute Summary
Attributes inherited from Node
Instance Method Summary collapse
-
#delta_matches?(criteria, if_empty: true) ⇒ Boolean
Returns
true
if the ‘delta’ value of the specifiedcriteria
(which must respond to .all?) matches the delta this event represents. -
#informational? ⇒ Boolean
Returns
true
if the event contains node information other than about a change in its state. -
#initialize(node, delta) ⇒ NodeDelta
constructor
Create a new NodeDelta event for the specified
node
. -
#match(object) ⇒ Object
Returns
true
if the specifiedobject
matches this event. -
#payload ⇒ Object
Overridden so delta events only contain the diff of attributes that changed.
Methods included from HashUtilities
compact_hash, hash_matches, merge_recursively, stringify_keys, symbolify_keys
Methods inherited from Node
Methods inherited from Arborist::Event
#inspect, #inspect_details, #to_h, #type
Constructor Details
#initialize(node, delta) ⇒ NodeDelta
Create a new NodeDelta event for the specified node
. The delta
is a Hash of:
attribute_name => [ old_value, new_value ]
17 18 19 |
# File 'lib/arborist/event/node_delta.rb', line 17 def initialize( node, delta ) super # Overridden for the documentation end |
Instance Method Details
#delta_matches?(criteria, if_empty: true) ⇒ Boolean
Returns true
if the ‘delta’ value of the specified criteria
(which must respond to .all?) matches the delta this event represents. If the specified criteria doesn’t contain any ‘delta` criteria, the default
value is used instead.
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/arborist/event/node_delta.rb', line 48 def delta_matches?( criteria, if_empty: true ) self.log.debug "Delta matching %p (%p if empty)" % [ criteria, if_empty ] delta_criteria = criteria['delta'] return if_empty if !delta_criteria || delta_criteria.empty? self.log.debug "Matching event against delta criteria: %p" % [ delta_criteria ] return delta_criteria.all? do |key, val| self.log.debug " matching %p: %p against %p" % [ key, val, self.payload ] hash_matches( self.payload, key, val ) end.tap {|match| self.log.debug " event delta %s match." % [ match ? "DID" : "did not"] } end |
#informational? ⇒ Boolean
Returns true
if the event contains node information other than about a change in its state.
30 31 32 |
# File 'lib/arborist/event/node_delta.rb', line 30 def informational? return true end |
#match(object) ⇒ Object
Returns true
if the specified object
matches this event.
36 37 38 39 40 41 42 |
# File 'lib/arborist/event/node_delta.rb', line 36 def match( object ) rval = super && self.delta_matches?( object.criteria ) && !self.delta_matches?( object.negative_criteria, if_empty: false ) self.log.debug "Delta event #match: %p" % [ rval ] return rval end |
#payload ⇒ Object
Overridden so delta events only contain the diff of attributes that changed.
23 24 25 |
# File 'lib/arborist/event/node_delta.rb', line 23 def payload return @payload end |