module ULID::CrockfordBase32
@see www.crockford.com/base32.html
This module supporting only `subset of original crockford for actual use-case` in ULID
context. Original decoding spec allows other characters. But I think ULID
should allow `subset` of Crockford's Base32. See below
* https://github.com/ulid/spec/pull/57 * https://github.com/kachick/ruby-ulid/issues/57 * https://github.com/kachick/ruby-ulid/issues/78
Constants
- CROCKFORD_BASE32_CHAR_BY_N32_CHAR
- CROCKFORD_BASE32_CHAR_PATTERN
- N32_CHAR_BY_CROCKFORD_BASE32_CHAR
- N32_CHAR_PATTERN
- STANDARD_BY_VARIANT
- VARIANT_PATTERN
Public Class Methods
decode(string)
click to toggle source
@api private @param [String] string @return [Integer]
# File lib/ulid/crockford_base32.rb, line 72 def self.decode(string) n32encoded = string.upcase.gsub(CROCKFORD_BASE32_CHAR_PATTERN, N32_CHAR_BY_CROCKFORD_BASE32_CHAR) n32encoded.to_i(32) end
encode(integer)
click to toggle source
@api private @param [Integer] integer @return [String]
# File lib/ulid/crockford_base32.rb, line 80 def self.encode(integer) n32encoded = integer.to_s(32) n32encoded.upcase.gsub(N32_CHAR_PATTERN, CROCKFORD_BASE32_CHAR_BY_N32_CHAR).rjust(ENCODED_LENGTH, '0') end
normalize(string)
click to toggle source
@api private @param [String] string @return [String]
# File lib/ulid/crockford_base32.rb, line 88 def self.normalize(string) string.gsub(VARIANT_PATTERN, STANDARD_BY_VARIANT) end