Module: Adler32

Defined in:
lib/adler32.rb,
lib/adler32/version.rb

Overview

implementation of Adler-32, see en.wikipedia.org/wiki/Adler-32

Constant Summary collapse

MOD =
65521
VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.calc(*args) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/adler32.rb', line 8

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



32
33
34
# File 'lib/adler32.rb', line 32

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