From 4455a5b91accda5da7c1b8128cb045c7eb7bb5da Mon Sep 17 00:00:00 2001 From: Saku Ytti Date: Fri, 25 Oct 2013 20:39:59 +0300 Subject: Fix fetch method --- lib/oxidized/nodes.rb | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'lib/oxidized/nodes.rb') diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb index d878d89..affeea8 100644 --- a/lib/oxidized/nodes.rb +++ b/lib/oxidized/nodes.rb @@ -1,6 +1,7 @@ module Oxidized require 'oxidized/node' class Oxidized::NotSupported < StandardError; end + class Oxidized::NodeNotFound < StandardError; end class Nodes < Array attr_accessor :source alias :put :unshift @@ -20,21 +21,18 @@ module Oxidized def list map { |e| e.name } end - def find_index node - index { |e| e.name == node } - end def show node - i = find_index node - self[i].serialize if i + i = find_node_index node + self[i].serialize end def fetch node, group - raise Oxidized::NotSupported unless Oxidized.mgr.output.respond_to? :fetch - i = find_index node - self[i].output.new.fetch node, group + i = find_node_index node + output = self[i].output.new + raise Oxidized::NotSupported unless output.respond_to? :fetch + output.fetch node, group end def del node - i = find_index node - delete_at i if i + delete_at find_node_index end # @param node [String] name of the node moved into the head of array def next node, opt={} @@ -52,5 +50,15 @@ module Oxidized def get (self << shift).last end + + private + + def find_index node + index { |e| e.name == node } + end + + def find_node_index node + find_index node or raise Oxidized::NodeNotFound + end end end -- cgit v1.2.1