Sha256: 86a1fdd1c2be66adc9023ea2c8e39747fb7370f8c16557f65405f4055c88a7c6

Contents?: true

Size: 458 Bytes

Versions: 2

Compression:

Stored size: 458 Bytes

Contents

require 'set'

class Hash
  unless instance_methods.include?(:dig)
    def dig(key, *keys)
      value = self[key]
      if !value.nil? && !keys.empty?
        value.dig(*keys)
      else
        value
      end
    end
  end

  def to_struct
    OpenStruct.new self
  end

  def amend(other)
    other.merge(self)
  end

  def diff(other)
    s1 = Set.new(self)
    s2 = Set.new(other)
    { deletions: (s1 - s2).to_h, additions: (s2 - s1).to_h }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mumukit-core-1.8.0 lib/mumukit/core/hash.rb
mumukit-core-1.7.0 lib/mumukit/core/hash.rb