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