class TTY::File::DigestFile

Attributes

source[R]

Public Class Methods

new(source, mode) click to toggle source
# File lib/tty/file/digest_file.rb, line 11
def initialize(source, mode)
  @source = source
  @digest = OpenSSL::Digest.new(mode)
end

Public Instance Methods

call() click to toggle source
# File lib/tty/file/digest_file.rb, line 16
def call
  if ::FileTest.file?(source.to_s)
    ::File.open(source, "rb") { |f| checksum_io(f, @digest) }
  else
    non_file = source
    if non_file.is_a?(String)
      non_file = StringIO.new(non_file)
    end
    if non_file.is_a?(StringIO)
      checksum_io(non_file, @digest)
    end
  end
end
checksum_io(io, digest) click to toggle source
# File lib/tty/file/digest_file.rb, line 30
def checksum_io(io, digest)
  while (chunk = io.read(1024 * 8))
    digest << chunk
  end
  digest.hexdigest
end