Class: Contrast::Agent::Assess::Policy::Propagator::Custom

Inherits:
Object
  • Object
show all
Defined in:
lib/contrast/agent/assess/policy/propagator/custom.rb

Overview

Propagation that results in some complex or specific translation of tags from the source to the target. Each node with the CUSTOM action knows the class and method it should call to preform this action.

Class Method Summary collapse

Class Method Details

.propagate(propagation_node, preshift, ret, block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/contrast/agent/assess/policy/propagator/custom.rb', line 17

def propagate propagation_node, preshift, ret, block
  clazz = propagation_node.patch_class
  method = propagation_node.patch_method

  # We cannot flip the String to a Module at patcher creation time -
  # the Module may not exist yet. Instead, we have to defer until the
  # first time the patcher is used.
  if clazz.is_a?(String)
    clazz = Object.cs__const_get(clazz)
    propagation_node.patch_class = clazz
  end
  clazz.send(method, propagation_node, preshift, ret, block)
end