Class: Nokogiri::CSS::Node
- Inherits:
-
Object
- Object
- Nokogiri::CSS::Node
- Defined in:
- lib/nokogiri/css/node.rb
Constant Summary collapse
- ALLOW_COMBINATOR_ON_SELF =
[:DIRECT_ADJACENT_SELECTOR, :FOLLOWING_SELECTOR, :CHILD_SELECTOR]
Instance Attribute Summary collapse
-
#type ⇒ Object
Get the type of this node.
-
#value ⇒ Object
Get the value of this node.
Instance Method Summary collapse
-
#accept(visitor) ⇒ Object
Accept
visitor
. -
#find_by_type(types) ⇒ Object
Find a node by type using
types
. -
#initialize(type, value) ⇒ Node
constructor
Create a new Node with
type
andvalue
. -
#to_a ⇒ Object
Convert to array.
-
#to_type ⇒ Object
Convert to_type.
-
#to_xpath(prefix = '//', visitor = XPathVisitor.new) ⇒ Object
Convert this CSS node to xpath with
prefix
usingvisitor
.
Constructor Details
#initialize(type, value) ⇒ Node
Create a new Node with type
and value
13 14 15 16 |
# File 'lib/nokogiri/css/node.rb', line 13 def initialize type, value @type = type @value = value end |
Instance Attribute Details
#type ⇒ Object
Get the type of this node
8 9 10 |
# File 'lib/nokogiri/css/node.rb', line 8 def type @type end |
#value ⇒ Object
Get the value of this node
10 11 12 |
# File 'lib/nokogiri/css/node.rb', line 10 def value @value end |
Instance Method Details
#accept(visitor) ⇒ Object
Accept visitor
19 20 21 |
# File 'lib/nokogiri/css/node.rb', line 19 def accept visitor visitor.send(:"visit_#{type.to_s.downcase}", self) end |
#find_by_type(types) ⇒ Object
Find a node by type using types
31 32 33 34 35 36 37 38 |
# File 'lib/nokogiri/css/node.rb', line 31 def find_by_type types matches = [] matches << self if to_type == types @value.each do |v| matches += v.find_by_type(types) if v.respond_to?(:find_by_type) end matches end |
#to_a ⇒ Object
Convert to array
48 49 50 |
# File 'lib/nokogiri/css/node.rb', line 48 def to_a [@type] + @value.map { |n| n.respond_to?(:to_a) ? n.to_a : [n] } end |
#to_type ⇒ Object
Convert to_type
41 42 43 44 45 |
# File 'lib/nokogiri/css/node.rb', line 41 def to_type [@type] + @value.map { |n| n.to_type if n.respond_to?(:to_type) }.compact end |
#to_xpath(prefix = '//', visitor = XPathVisitor.new) ⇒ Object
Convert this CSS node to xpath with prefix
using visitor
25 26 27 28 |
# File 'lib/nokogiri/css/node.rb', line 25 def to_xpath prefix = '//', visitor = XPathVisitor.new prefix = '.' if ALLOW_COMBINATOR_ON_SELF.include?(type) && value.first.nil? prefix + visitor.accept(self) end |