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
Class
on which this visitor was created.
Instance Method Summary collapse
-
#initialize(attributes = {}) {|node| ... } ⇒ Visitor
constructor
A new instance of Visitor.
-
#visit(instance, node) ⇒ Object
Visit
node
with #block instance_exec'd oninstance
.
Methods inherited from Base
Constructor Details
#initialize(attributes = {}) {|node| ... } ⇒ Visitor
Returns a new instance of Visitor.
52 53 54 55 56 57 |
# File 'app/models/metasploit/model/visitation/visitor.rb', line 52 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.
15 16 17 |
# File 'app/models/metasploit/model/visitation/visitor.rb', line 15 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
.
22 23 24 |
# File 'app/models/metasploit/model/visitation/visitor.rb', line 22 def module_name @module_name end |
#parent ⇒ Class
The Class
on which this visitor was created.
28 29 30 |
# File 'app/models/metasploit/model/visitation/visitor.rb', line 28 def parent @parent end |
Instance Method Details
#visit(instance, node) ⇒ Object
Visit node
with #block instance_exec'd on instance
.
65 66 67 68 69 70 71 |
# File 'app/models/metasploit/model/visitation/visitor.rb', line 65 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 |