Module: Adler32

Defined in:
lib/hyalite/adler32.rb

Constant Summary collapse

MOD =
65521

Class Method Summary collapse

Class Method Details

.calc(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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) ⇒ Object



29
30
31
# File 'lib/hyalite/adler32.rb', line 29

def checksum(*args)
  "%08x" % calc(*args)
end