Module: Pagy::B64

Defined in:
lib/pagy/modules/b64.rb

Overview

Cheap Base64 specialized methods to avoid dependencies

Class Method Summary collapse

Class Method Details

.decode(str) ⇒ Object



12
13
14
# File 'lib/pagy/modules/b64.rb', line 12

def decode(str)
  str.unpack1('m0')
end

.encode(bin) ⇒ Object



8
9
10
# File 'lib/pagy/modules/b64.rb', line 8

def encode(bin)
  [bin].pack('m0')
end

.urlsafe_decode(str) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/pagy/modules/b64.rb', line 24

def urlsafe_decode(str)
  if !str.end_with?('=') && str.length % 4 != 0
    str = str.ljust((str.length + 3) & ~3, '=')
    str.tr!('-_', '+/')
  else
    str = str.tr('-_', '+/')
  end

  decode(str)
end

.urlsafe_encode(bin) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/pagy/modules/b64.rb', line 16

def urlsafe_encode(bin)
  str = encode(bin)
  str.tr!('+/', '-_')
  str.delete!('=')

  str
end