class Arborist::Event::NodeDelta

An event sent when one or more attributes of a node changes.

Public Class Methods

new( node, delta ) click to toggle source

Create a new NodeDelta event for the specified node. The delta is a Hash of:

attribute_name => [ old_value, new_value ]
Calls superclass method Arborist::Event::Node::new
# File lib/arborist/event/node_delta.rb, line 16
def initialize( node, delta )
        super # Overridden for the documentation
end

Public Instance Methods

delta_matches?( criteria, if_empty: true ) click to toggle source

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.

# File lib/arborist/event/node_delta.rb, line 47
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?() click to toggle source

Returns true if the event contains node information other than about a change in its state.

# File lib/arborist/event/node_delta.rb, line 29
def informational?
        return true
end
match( object ) click to toggle source

Returns true if the specified object matches this event.

Calls superclass method Arborist::Event::Node#match
# File lib/arborist/event/node_delta.rb, line 35
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() click to toggle source

Overridden so delta events only contain the diff of attributes that changed.

# File lib/arborist/event/node_delta.rb, line 22
def payload
        return @payload
end