diff options
author | Samer Abdel-Hafez <sam@arahant.net> | 2013-10-25 15:00:13 -0700 |
---|---|---|
committer | Samer Abdel-Hafez <sam@arahant.net> | 2013-10-25 15:00:13 -0700 |
commit | 056ecb1a94d24085497d1baa304645390052e50b (patch) | |
tree | 96764af0bcc7980c66779f7ef42e832df88982d5 /lib/oxidized/nodes.rb | |
parent | feba4c2b9e0faeb40cad32f16d7b024a2d4327ae (diff) | |
parent | 4455a5b91accda5da7c1b8128cb045c7eb7bb5da (diff) |
Merge pull request #1 from ytti/master
update local branch
Diffstat (limited to 'lib/oxidized/nodes.rb')
-rw-r--r-- | lib/oxidized/nodes.rb | 28 |
1 files changed, 18 insertions, 10 deletions
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 |