Basic docs for the NodeSet class.
This commit is contained in:
parent
d2e74d8a0b
commit
253575dc37
|
@ -2,27 +2,52 @@ module Oga
|
||||||
module XML
|
module XML
|
||||||
##
|
##
|
||||||
# The NodeSet class contains a set of {Oga::XML::Node} instances that can
|
# The NodeSet class contains a set of {Oga::XML::Node} instances that can
|
||||||
# be queried and modified.
|
# be queried and modified. Optionally NodeSet instances can take ownership
|
||||||
|
# of a node (besides just containing it). This allows the nodes to query
|
||||||
|
# their previous and next elements.
|
||||||
#
|
#
|
||||||
class NodeSet
|
class NodeSet
|
||||||
include Enumerable
|
include Enumerable
|
||||||
|
|
||||||
|
##
|
||||||
|
# @param [Array] nodes The nodes to add to the set.
|
||||||
|
#
|
||||||
def initialize(nodes = [])
|
def initialize(nodes = [])
|
||||||
@nodes = nodes
|
@nodes = nodes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Yields the supplied block for every node.
|
||||||
|
#
|
||||||
|
# @yieldparam [Oga::XML::Node]
|
||||||
|
#
|
||||||
def each
|
def each
|
||||||
@nodes.each { |node| yield node }
|
@nodes.each { |node| yield node }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the last node in the set.
|
||||||
|
#
|
||||||
|
# @return [Oga::XML::Node]
|
||||||
|
#
|
||||||
def last
|
def last
|
||||||
return @nodes[-1]
|
return @nodes[-1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns `true` if the set is empty.
|
||||||
|
#
|
||||||
|
# @return [TrueClass|FalseClass]
|
||||||
|
#
|
||||||
def empty?
|
def empty?
|
||||||
return @nodes.empty?
|
return @nodes.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the amount of nodes in the set.
|
||||||
|
#
|
||||||
|
# @return [Fixnum]
|
||||||
|
#
|
||||||
def length
|
def length
|
||||||
return @nodes.length
|
return @nodes.length
|
||||||
end
|
end
|
||||||
|
@ -30,28 +55,60 @@ module Oga
|
||||||
alias_method :count, :length
|
alias_method :count, :length
|
||||||
alias_method :size, :length
|
alias_method :size, :length
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the index of the given node.
|
||||||
|
#
|
||||||
|
# @param [Oga::XML::Node] node
|
||||||
|
# @return [Fixnum]
|
||||||
|
#
|
||||||
def index(node)
|
def index(node)
|
||||||
return @nodes.index(node)
|
return @nodes.index(node)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Pushes the node at the end of the set.
|
||||||
|
#
|
||||||
|
# @param [Oga::XML::Node] node
|
||||||
|
#
|
||||||
def push(node)
|
def push(node)
|
||||||
@nodes << node
|
@nodes << node
|
||||||
end
|
end
|
||||||
|
|
||||||
alias_method :<<, :push
|
alias_method :<<, :push
|
||||||
|
|
||||||
|
##
|
||||||
|
# Pushes the node at the start of the set.
|
||||||
|
#
|
||||||
|
# @param [Oga::XML::Node] node
|
||||||
|
#
|
||||||
def unshift(node)
|
def unshift(node)
|
||||||
@nodes.unshift(node)
|
@nodes.unshift(node)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Shifts a node from the start of the set.
|
||||||
|
#
|
||||||
|
# @return [Oga::XML::Node]
|
||||||
|
#
|
||||||
def shift
|
def shift
|
||||||
return @nodes.shift
|
return @nodes.shift
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Pops a node from the end of the set.
|
||||||
|
#
|
||||||
|
# @return [Oga::XML::Node]
|
||||||
|
#
|
||||||
def pop
|
def pop
|
||||||
return @nodes.pop
|
return @nodes.pop
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Removes the current nodes from their owning set. The nodes are *not*
|
||||||
|
# removed from the current set.
|
||||||
|
#
|
||||||
|
# This method is intended to remove nodes from an XML document/node.
|
||||||
|
#
|
||||||
def remove
|
def remove
|
||||||
@nodes.each do |node|
|
@nodes.each do |node|
|
||||||
node.node_set.delete(node)
|
node.node_set.delete(node)
|
||||||
|
@ -66,6 +123,12 @@ module Oga
|
||||||
@nodes.delete(node)
|
@nodes.delete(node)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the values of the given attribute.
|
||||||
|
#
|
||||||
|
# @param [String|Symbol] name The name of the attribute.
|
||||||
|
# @return [Array]
|
||||||
|
#
|
||||||
def attribute(name)
|
def attribute(name)
|
||||||
values = []
|
values = []
|
||||||
|
|
||||||
|
@ -80,6 +143,11 @@ module Oga
|
||||||
|
|
||||||
alias_method :attr, :attribute
|
alias_method :attr, :attribute
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the text of all nodes in the set.
|
||||||
|
#
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
def text
|
def text
|
||||||
text = ''
|
text = ''
|
||||||
|
|
||||||
|
@ -92,6 +160,9 @@ module Oga
|
||||||
return text
|
return text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Takes ownership of all the nodes in the current set.
|
||||||
|
#
|
||||||
def associate_nodes!
|
def associate_nodes!
|
||||||
@nodes.each do |node|
|
@nodes.each do |node|
|
||||||
node.node_set = self
|
node.node_set = self
|
||||||
|
|
Loading…
Reference in New Issue