Sha256: e80a7389a4a8291d3032b9eca2e535af5df073c5a0b63f761786c70af52ce5ff
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true module BSON::ObjectId::UUIDConvertable UUID_PREFIX = '0bdaea' UUID_REGEX = /\A0bdaea[0-9a-f]{2}-[0-9a-f]{4}-4[0-9a-f]{3}-[ab][0-9a-f]{3}-[0-9a-f]{12}\z/i UUID_VERSION = '4' UUID_VARIANT = 'a' def to_uuid [ UUID_PREFIX + to_s[0..1], # 6 digit prefix + first 2 oid digits to_s[2..5], # next 4 oid digits UUID_VERSION + to_s[6..8], # 1 digit version(0x4) + next 3 oid digits UUID_VARIANT + to_s[9..11], # 1 digit variant(0b101) + 1 zero bit + next 3 oid digits to_s[12..23] # last 12 oid digits ].join('-') end module ClassMethods def legal?(string) UUID_REGEX.match?(string.to_s) ? true : super end def from_string(string) UUID_REGEX.match?(string.to_s) ? from_uuid(string) : super end def from_uuid(string) from_string(string[6..7] + string[9..12] + string[15..17] + string[20..22] + string[24..35]) end end def self.prepended(base) class << base prepend ClassMethods end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bson-objectid-to-uuid-0.1.3 | lib/bson/object_id/uuid_convertable.rb |