Class: Metasploit::Model::Visitation::Visitor
- Defined in:
- app/models/metasploit/model/visitation/visitor.rb
Overview
Visits node in a tree, such as Search::Query#tree.
Instance Attribute Summary collapse
- 
  
    
      #block  ⇒ Proc 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Block that is instance_exec'd on instance of #parent and passed the node to visit. 
- 
  
    
      #module_name  ⇒ String 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Name of Module(orClass) that can be visited by this visitor.
- 
  
    
      #parent  ⇒ Class 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    The Classon which this visitor was created.
Instance Method Summary collapse
- 
  
    
      #initialize(attributes = {}) {|node| ... } ⇒ Visitor 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Visitor. 
- 
  
    
      #visit(instance, node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Visit nodewith #block instance_exec'd oninstance.
Methods inherited from Base
Constructor Details
#initialize(attributes = {}) {|node| ... } ⇒ Visitor
Returns a new instance of Visitor.
| 49 50 51 52 53 54 | # File 'app/models/metasploit/model/visitation/visitor.rb', line 49 def initialize(attributes={}, &block) attributes.assert_valid_keys(:module_name, :parent) @block = block super end | 
Instance Attribute Details
#block ⇒ Proc
Block that is instance_exec'd on instance of #parent and passed the node to visit.
| 12 13 14 | # File 'app/models/metasploit/model/visitation/visitor.rb', line 12 def block @block end | 
#module_name ⇒ String
Name of Module (or Class) that can be visited by this visitor.  This visitor is also assumed to be able to
#visit any Class or Module that has the Module or Class with module_name as a Module#ancestor.
| 19 20 21 | # File 'app/models/metasploit/model/visitation/visitor.rb', line 19 def module_name @module_name end | 
#parent ⇒ Class
The Class on which this visitor was created.
| 25 26 27 | # File 'app/models/metasploit/model/visitation/visitor.rb', line 25 def parent @parent end | 
Instance Method Details
#visit(instance, node) ⇒ Object
Visit node with #block instance_exec'd on instance.
| 62 63 64 65 66 67 68 | # File 'app/models/metasploit/model/visitation/visitor.rb', line 62 def visit(instance, node) unless instance.is_a? parent raise TypeError, "#{instance} is not an instance of #{parent}, so it cannot be visited." end instance.instance_exec(node, &block) end |