From 15fa7a2068db79097a52d251f14eb3b83b8134f2 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Wed, 25 Jun 2014 09:41:58 +0200 Subject: [PATCH] Remove explicit index tracking of NodeSet. Instead the various nodes can use NodeSet#index (aka Array#index) instead. This has a slight performance overhead on very large (millions) of nodes but should be fine in most other cases. --- lib/oga/xml/node_set.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/oga/xml/node_set.rb b/lib/oga/xml/node_set.rb index cfe092f..db8779d 100644 --- a/lib/oga/xml/node_set.rb +++ b/lib/oga/xml/node_set.rb @@ -9,8 +9,6 @@ module Oga def initialize(nodes = []) @nodes = nodes - - associate_nodes end def each @@ -23,9 +21,12 @@ module Oga alias_method :size, :length + def index(node) + return @nodes.index(node) + end + def push(node) node.node_set = self - node.index = node.length @nodes << node end @@ -38,8 +39,8 @@ module Oga def remove @nodes.each do |node| - # Remove references to the node from the parent node, if any. - node.parent.children.delete!(node) if node.parent + node.node_set.delete!(node) + node.node_set = nil end end @@ -63,7 +64,6 @@ module Oga def associate_nodes @nodes.each_with_index do |node, index| node.node_set = self - node.index = index end end end # NodeSet