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



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

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

.encode(bin) ⇒ Object



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

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

.urlsafe_decode(str) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/pagy/modules/b64.rb', line 19

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



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

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