Class: Nokogiri::XML::Node
- Inherits:
-
Object
- Object
- Nokogiri::XML::Node
- Defined in:
- lib/rusty/nokogiri_ext.rb
Overview
Instance Method Summary collapse
-
#attributes_hash ⇒ Object
returns a nodes attributes as a hash.
-
#classes ⇒ Object
returns an array of classes as Strings.
-
#has_class?(name) ⇒ Boolean
does this node has a class with a given name?.
- #parents ⇒ Object
-
#self_and_parents(node = self) ⇒ Object
return a list of all parent nodes, up until and excluding the document node.
-
#simplified_name ⇒ Object
returns the debug node name for this node; which is a simplified CSS node name name#idclassclass.
Instance Method Details
#attributes_hash ⇒ Object
returns a nodes attributes as a hash
12 13 14 15 16 |
# File 'lib/rusty/nokogiri_ext.rb', line 12 def attributes_hash attributes.inject({}) do |hash, (name, attr)| hash.update name => attr.value end end |
#classes ⇒ Object
returns an array of classes as Strings
19 20 21 22 |
# File 'lib/rusty/nokogiri_ext.rb', line 19 def classes return [] unless classes = self["class"] classes.strip.split(/\s+/) end |
#has_class?(name) ⇒ Boolean
does this node has a class with a given name?
25 26 27 28 |
# File 'lib/rusty/nokogiri_ext.rb', line 25 def has_class?(name) @class_syms ||= classes.map(&:to_sym) @class_syms.include?(name.to_sym) end |
#parents ⇒ Object
30 31 32 33 |
# File 'lib/rusty/nokogiri_ext.rb', line 30 def parents return [] if parent == document self_and_parents(parent) end |
#self_and_parents(node = self) ⇒ Object
return a list of all parent nodes, up until and excluding the document node.
36 37 38 39 40 41 42 43 44 |
# File 'lib/rusty/nokogiri_ext.rb', line 36 def self_and_parents(node=self) [ ].tap do |parents| while node.parent != node.document parents.unshift(node) node = node.parent end parents.unshift node end end |
#simplified_name ⇒ Object
returns the debug node name for this node; which is a simplified CSS node name name#idclassclass
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/rusty/nokogiri_ext.rb', line 48 def simplified_name simplified_name = name if id = self["id"] simplified_name += "##{id}" end classes.each do |klass| simplified_name += ".#{klass}" end simplified_name.gsub(/^div([\.\#])/, "\\1") end |