Module: Subledger::UUID
- Defined in:
- lib/subledger/uuid.rb
Constant Summary collapse
- SPACE =
62 ** 22
- CHARS =
('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a
- VALID =
/^[0-9A-Za-z]{22}$/
Class Method Summary collapse
- .as_bignum ⇒ Object
- .as_string ⇒ Object
- .invalid?(uuid) ⇒ Boolean
- .to_bignum(uuid) ⇒ Object
- .to_string(bignum) ⇒ Object
- .valid?(uuid) ⇒ Boolean
Class Method Details
.as_bignum ⇒ Object
24 25 26 |
# File 'lib/subledger/uuid.rb', line 24 def self.as_bignum SecureRandom.random_number SPACE end |
.as_string ⇒ Object
20 21 22 |
# File 'lib/subledger/uuid.rb', line 20 def self.as_string to_string as_bignum end |
.invalid?(uuid) ⇒ Boolean
16 17 18 |
# File 'lib/subledger/uuid.rb', line 16 def self.invalid? uuid uuid.nil? or uuid !~ VALID end |
.to_bignum(uuid) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/subledger/uuid.rb', line 39 def self.to_bignum uuid bignum = 0 power = 0 uuid.split('').reverse.each do |character| bignum += CHARS.index( character ) * ( 62 ** power ) power += 1 end bignum end |
.to_string(bignum) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/subledger/uuid.rb', line 28 def self.to_string bignum base_62 = '' 22.times do base_62 << CHARS[ bignum.modulo 62 ] bignum /= 62 end base_62.reverse end |
.valid?(uuid) ⇒ Boolean
12 13 14 |
# File 'lib/subledger/uuid.rb', line 12 def self.valid? uuid !uuid.nil? and uuid =~ VALID end |