Sha256: 43a382c95a4c3aaefeaed9f50ff401ffb4032b29195336b789f3ad1193f7b419

Contents?: true

Size: 639 Bytes

Versions: 20

Compression:

Stored size: 639 Bytes

Contents

# frozen_string_literal: true

class Pagy # :nodoc:
  # Cheap Base64 specialized methods to avoid dependencies
  module B64
    module_function

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

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

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

    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
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
pagy-9.3.4 lib/pagy/b64.rb
pagy-9.3.3 lib/pagy/b64.rb
pagy-9.3.2 lib/pagy/b64.rb
pagy-9.3.1 lib/pagy/b64.rb
pagy-9.3.0 lib/pagy/b64.rb
pagy-9.2.2 lib/pagy/b64.rb
pagy-9.2.1 lib/pagy/b64.rb
pagy-9.2.0 lib/pagy/b64.rb
pagy-9.1.1 lib/pagy/b64.rb
pagy-9.1.0 lib/pagy/b64.rb
pagy-9.0.9 lib/pagy/b64.rb
pagy-9.0.8 lib/pagy/b64.rb
pagy-9.0.7 lib/pagy/b64.rb
pagy-9.0.6 lib/pagy/b64.rb
pagy-9.0.5 lib/pagy/b64.rb
pagy-9.0.4 lib/pagy/b64.rb
pagy-9.0.3 lib/pagy/b64.rb
pagy-9.0.2 lib/pagy/b64.rb
pagy-9.0.1 lib/pagy/b64.rb
pagy-9.0.0 lib/pagy/b64.rb