M
Michael Neumann
Hi,
Would be nice to have in standard Ruby, as it's common to calculate a
digest of a file.
Example of usage:
require 'digest/sha1'
require 'digest/from_io'
File.open('/tmp/x') {|f|
Digest::SHA1.from_io(f)
}
Implementation:
# file: digest/from_io.rb
class Digest::Base
def self.from_io(io, block_size=8*1024)
digest = new
while data = io.read(block_size)
digest.update(data)
end
digest
end
end
Another addition would be the raw_digest method (which of course could
be better implemented in C):
require 'enumerator'
class Digest::Base
def raw_digest
hexdigest.to_enum
scan, /../).map {|byte| byte.to_i(16).chr}.join
end
alias rawdigest raw_digest
end
Gavin, feel free to add it to extlib/addlib if you think it's worth.
matz, do you think, we can add from_io to stdlib?
Regards,
Michael
Would be nice to have in standard Ruby, as it's common to calculate a
digest of a file.
Example of usage:
require 'digest/sha1'
require 'digest/from_io'
File.open('/tmp/x') {|f|
Digest::SHA1.from_io(f)
}
Implementation:
# file: digest/from_io.rb
class Digest::Base
def self.from_io(io, block_size=8*1024)
digest = new
while data = io.read(block_size)
digest.update(data)
end
digest
end
end
Another addition would be the raw_digest method (which of course could
be better implemented in C):
require 'enumerator'
class Digest::Base
def raw_digest
hexdigest.to_enum
end
alias rawdigest raw_digest
end
Gavin, feel free to add it to extlib/addlib if you think it's worth.
matz, do you think, we can add from_io to stdlib?
Regards,
Michael