Method: Map#set

Defined in:
lib/map.rb

#set(*args) ⇒ Object



824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
# File 'lib/map.rb', line 824

def set(*args)
  case
    when args.empty?
      return []
    when args.size == 1 && args.first.is_a?(Hash)
      hash = args.shift
    else
      hash = {}
      value = args.pop
      key = Array(args).flatten
      hash[key] = value
  end

  strategy = hash.map{|skey, svalue| [Array(skey), svalue]}

  strategy.each do |skey, svalue|
    leaf_for(skey, :autovivify => true) do |leaf, k|
      Map.collection_set(leaf, k, svalue)
    end
  end

  self
end