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
12 13 14 15 |
# File 'lib/nokogiri/css/node.rb', line 12 def initialize type, value @type = type @value = value end |
Instance Attribute Details
#type ⇒ Object
Get the type of this node
7 8 9 |
# File 'lib/nokogiri/css/node.rb', line 7 def type @type end |
#value ⇒ Object
Get the value of this node
9 10 11 |
# File 'lib/nokogiri/css/node.rb', line 9 def value @value end |
Instance Method Details
#accept(visitor) ⇒ Object
Accept visitor
18 19 20 |
# File 'lib/nokogiri/css/node.rb', line 18 def accept visitor visitor.send(:"visit_#{type.to_s.downcase}", self) end |
#find_by_type(types) ⇒ Object
Find a node by type using types
30 31 32 33 34 35 36 37 |
# File 'lib/nokogiri/css/node.rb', line 30 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
47 48 49 |
# File 'lib/nokogiri/css/node.rb', line 47 def to_a [@type] + @value.map { |n| n.respond_to?(:to_a) ? n.to_a : [n] } end |
#to_type ⇒ Object
Convert to_type
40 41 42 43 44 |
# File 'lib/nokogiri/css/node.rb', line 40 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
24 25 26 27 |
# File 'lib/nokogiri/css/node.rb', line 24 def to_xpath prefix = '//', visitor = XPathVisitor.new prefix = '.' if ALLOW_COMBINATOR_ON_SELF.include?(type) && value.first.nil? prefix + visitor.accept(self) end |