Sha256: a4ef04f5daa5e6baeab3ac90325cbcaa208a2425eac9f4f8f0bbc680d337e063
Contents?: true
Size: 905 Bytes
Versions: 3
Compression:
Stored size: 905 Bytes
Contents
require 'digest/sha2' module Linguist module SHA256 # Public: Create deep nested digest of value object. # # Useful for object comparison. # # obj - Object to digest. # # Returns String hex digest def self.hexdigest(obj) digest = Digest::SHA256.new case obj when String, Symbol, Integer, Float digest.update "#{obj.class}" digest.update "#{obj}" when TrueClass, FalseClass, NilClass digest.update "#{obj.class}" when Array digest.update "#{obj.class}" for e in obj digest.update(hexdigest(e)) end when Hash digest.update "#{obj.class}" for e in obj.map { |(k, v)| hexdigest([k, v]) }.sort digest.update(e) end else raise TypeError, "can't convert #{obj.inspect} into String" end digest.hexdigest end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
github-linguist-9.0.0 | lib/linguist/sha256.rb |
github-linguist-8.0.1 | lib/linguist/sha256.rb |
github-linguist-8.0.0 | lib/linguist/sha256.rb |