Sha256: 3461d0b19ca7dca8ca9ec304c196841eac24b710d8f4f3d3c392b3bd25400a83

Contents?: true

Size: 714 Bytes

Versions: 3

Compression:

Stored size: 714 Bytes

Contents

# frozen_string_literal: true

# TODO: убрать, все равно конфиг надо парсить нормально

module DeepMerge

  refine Hash do

    def deep_merge! other
      other.each do |key, value|
        if has_key?(key) && self[key].respond_to?(:deep_merge!)
          self[key].deep_merge! value
        else
          self[key] = value
        end
      end
      self
    end

  end

  refine Array do

    def deep_merge! other
      other.each do |value|
        next if self.include?(value)
        next if String === value && self.include?(value.intern)
        next if Symbol === value && self.include?(value.to_s)
        self << value
      end
      self
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
inat-get-0.8.0.15 lib/inat/utils/deep.rb
inat-get-0.8.0.14 lib/inat/utils/deep.rb
inat-get-0.8.0.13 lib/inat/utils/deep.rb