Module: Arachni::Parser::WithChildren::Search
- Included in:
- Arachni::Parser::WithChildren
- Defined in:
- lib/arachni/parser/with_children/search.rb
Instance Method Summary collapse
- #descendants ⇒ Object
- #nodes_by_attribute_name(name) ⇒ Object
- #nodes_by_attribute_name_and_value(name, value) ⇒ Object
- #nodes_by_class(klass) ⇒ Object
- #nodes_by_name(name) ⇒ Object
- #nodes_by_names(*names) ⇒ Object
- #traverse(klass = nil, &block) ⇒ Object
Instance Method Details
#descendants ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/arachni/parser/with_children/search.rb', line 19 def descendants @descendants ||= begin n = [] traverse { |e| n << e } n end end |
#nodes_by_attribute_name(name) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/arachni/parser/with_children/search.rb', line 54 def nodes_by_attribute_name( name ) name = name.to_s.downcase @nodes_by_attribute_name ||= {} @nodes_by_attribute_name[name.hash] ||= begin descendants.select do |e| e.respond_to?(:attributes) && e.attributes.include?( name ) end end end |
#nodes_by_attribute_name_and_value(name, value) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/arachni/parser/with_children/search.rb', line 65 def nodes_by_attribute_name_and_value( name, value ) name = name.to_s.downcase @nodes_by_attribute_name_and_value ||= {} @nodes_by_attribute_name_and_value[[name, value].hash] ||= begin nodes_by_attribute_name( name ).select do |e| e[name].to_s.downcase == value end end end |
#nodes_by_class(klass) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/arachni/parser/with_children/search.rb', line 27 def nodes_by_class( klass ) @nodes_by_name ||= {} @nodes_by_name[name] ||= begin descendants.select do |e| e.kind_of? klass end end end |
#nodes_by_name(name) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/arachni/parser/with_children/search.rb', line 36 def nodes_by_name( name ) name = name.to_s.downcase @nodes_by_name ||= {} @nodes_by_name[name.hash] ||= begin descendants.select do |e| e.respond_to?( :name ) && e.name == name.to_sym end end end |
#nodes_by_names(*names) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/arachni/parser/with_children/search.rb', line 47 def nodes_by_names( *names ) names = names.flatten @nodes_by_name ||= {} @nodes_by_name[names.hash] ||= names.map { |n| nodes_by_name( n ) }.flatten end |
#traverse(klass = nil, &block) ⇒ Object
15 16 17 |
# File 'lib/arachni/parser/with_children/search.rb', line 15 def traverse( klass = nil, &block ) traverser children, klass, &block end |