NodeDelta

class
Superclass
Arborist::Event::Node
Included Modules
Arborist::HashUtilities

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

Public Class Methods

anchor
new( node, delta )

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

attribute_name => [ old_value, new_value ]
# File lib/arborist/event/node_delta.rb, line 16
def initialize( node, delta )
        super # Overridden for the documentation
end

Public Instance Methods

anchor
delta_matches?( criteria, if_empty: true )

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 40
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
anchor
match( object )

Returns true if the specified object matches this event.

# File lib/arborist/event/node_delta.rb, line 28
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
anchor
payload()

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