Sha256: 7afe7b8b778d42c42cb0f4f4ee7c1c928b4b972c4244bec2f5cde08fc2ce7308
Contents?: true
Size: 777 Bytes
Versions: 3
Compression:
Stored size: 777 Bytes
Contents
# frozen_string_literal: true module Lite module Uxid class Ulid < Base::Irreversible MASK = 0x1f def encode oct = octect ele = "0" * coder_size pos = coder_size - 1 while oct.positive? ele[pos] = coder_charset[oct & MASK] oct >>= 5 pos -= 1 end ele end private def bytes "#{unixtime_48bit}#{SecureRandom.random_bytes(10)}" end def octect (hi, lo) = bytes.unpack("Q>Q>") (hi << 64) | lo end def unixtime_ms time = Time.respond_to?(:current) ? Time.current : Time.now time.to_i * 1_000 end def unixtime_48bit [unixtime_ms].pack("Q>")[2..-1] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lite-uxid-1.5.2 | lib/lite/uxid/ulid.rb |
lite-uxid-1.5.1 | lib/lite/uxid/ulid.rb |
lite-uxid-1.5.0 | lib/lite/uxid/ulid.rb |