class Biosphere::Node::Attribute
Public Instance Methods
deep_set(*args)
click to toggle source
# File lib/biosphere/node.rb, line 9 def deep_set(*args) #puts "deep_set: #{args}" raise ArgumentError, "must pass at least one key, and a value" if args.length < 2 value = args.pop args = args.first if args.length == 1 && args.first.kind_of?(Array) key = args.first raise ArgumentError, "must be a number" if self.kind_of?(Array) && !key.kind_of?(Numeric) if args.length == 1 self[key] = value else child = self[key] unless child.respond_to?(:store_path) self[key] = self.class.new child = self[key] end child.deep_set(args[1..-1].push, value) end end