Sha256: 3340264e8caa8c57ce2de3c451177374eb9ac10123d3b71ebb5a3ce3a54ad80d

Contents?: true

Size: 448 Bytes

Versions: 2

Compression:

Stored size: 448 Bytes

Contents

require "digest/md5"
require "forwardable"

class String
  def crc32
    Zlib.crc32(self)
  end

  def md5
    Digest::MD5.hexdigest(self)
  end

  # return a 64 bit uid
  def uid64
    md5.unpack("LL").inject { |a,b| (a << 31) + b }
  end
end

class Hash
  extend Forwardable
  delegate [:uid64, :crc32, :md5] => :calculate_stable_hashable
  
  def calculate_stable_hashable
    map { |k,v| "#{k.inspect}:#{v.inspect}" }.sort.join("//")
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
radiospiel-app-0.1.1 lib/core-extensions/uids.rb
radiospiel-app-0.1.0 lib/core-extensions/uids.rb