class JSON::LD::API::Nokogiri::NodeProxy
Proxy class to implement uniform element accessors
Attributes
node[R]
parent[R]
Public Class Methods
new(node, parent = nil)
click to toggle source
# File lib/json/ld/html/nokogiri.rb, line 21 def initialize(node, parent = nil) @node = node @parent = parent end
Public Instance Methods
ancestors()
click to toggle source
Ancestors of this element, in order
# File lib/json/ld/html/nokogiri.rb, line 64 def ancestors @ancestors ||= parent ? parent.ancestors + [parent] : [] end
attribute_nodes()
click to toggle source
Inner text of an element. Decode Entities @return [String]
def inner_text
coder = HTMLEntities.new coder.decode(@node.inner_text)
end
# File lib/json/ld/html/nokogiri.rb, line 77 def attribute_nodes @attribute_nodes ||= NodeSetProxy.new(@node.attribute_nodes, self) end
base()
click to toggle source
Return xml:base on element, if defined
@return [String]
# File lib/json/ld/html/nokogiri.rb, line 30 def base @node.attribute_with_ns("base", RDF::XML.to_s) || @node.attribute('xml:base') end
children()
click to toggle source
Children of this node
@return [NodeSetProxy]
# File lib/json/ld/html/nokogiri.rb, line 59 def children NodeSetProxy.new(@node.children, self) end
display_path()
click to toggle source
# File lib/json/ld/html/nokogiri.rb, line 34 def display_path @display_path ||= begin path = [] path << parent.display_path if parent path << @node.name case @node when ::Nokogiri::XML::Element then path.join("/") when ::Nokogiri::XML::Attr then path.join("@") else path.join("?") end end end
method_missing(method, *args)
click to toggle source
Proxy for everything else to @node
# File lib/json/ld/html/nokogiri.rb, line 93 def method_missing(method, *args) @node.send(method, *args) end
text_content?()
click to toggle source
Return true of all child elements are text
@return [Array<:text, :element, :attribute>]
# File lib/json/ld/html/nokogiri.rb, line 51 def text_content? @node.children.all? {|c| c.text?} end
xpath(*args)
click to toggle source
# File lib/json/ld/html/nokogiri.rb, line 81 def xpath(*args) @node.xpath(*args).map do |n| # Get node ancestors parent = n.ancestors.reverse.inject(nil) do |p,node| NodeProxy.new(node, p) end NodeProxy.new(n, parent) end end