module Adler32

Constants

MOD

Public Class Methods

calc(*args) click to toggle source
# File lib/hyalite/adler32.rb, line 5
def calc(*args)
  a = 1
  b = 0
  c = 1000

  args.each do |str|
    throw ArgumentError, "Only string can be passed: #{str.inspect}:#{str.class}" unless str.is_a? String

    str.each_char do |char|
      a += char.ord
      b += a
      c -= 1
      if c <= 0
        a %= MOD
        b %= MOD
        c = 1000
      end
    end
  end
  a %= MOD
  b %= MOD
  (b << 16) | a
end
checksum(*args) click to toggle source
# File lib/hyalite/adler32.rb, line 29
def checksum(*args)
  "%08x" % calc(*args)
end