Class: XID

Inherits:
Object
  • Object
show all
Defined in:
lib/sixarm_ruby_xid/xid.rb

Class Method Summary collapse

Class Method Details

.generateObject

Generate a new XID string.

Example:

string = XID.generate
#=> "4bb88af57d4ddc224fecad688442423d"

Return: [String] A new XID string



20
21
22
# File 'lib/sixarm_ruby_xid/xid.rb', line 20

def self.generate
  SecureRandom.hex
end

.parse(object) ⇒ Object

Parse any object to an XID string.

This does these steps:

* Convert the object to a string by calling `#to_s`.
* Convert the string to lower case by calling `#downcase`.
* Delete any non-hex characters.
* Take the first 32 characters.

Example:

string = XID.parse("***FFAD30A1-BE5E-B511-9ED8-976CAB0281B6***")
#=> "ffad30a1be5eb5119ed8976cab0281b6"

Return: [XID] A new XID

Raises:

  • (ArgumentError)


53
54
55
56
57
# File 'lib/sixarm_ruby_xid/xid.rb', line 53

def self.parse(object)
  xid = object.to_s.downcase.gsub(/[^0-9a-f]/,'')[0...32]
  raise ArgumentError if !XID.valid?(xid)
  xid
end

.valid?(string) ⇒ Boolean

Is a given XID string valid?

Example:

XID.valid?("4bb88af57d4ddc224fecad688442423d") #=> true
XID.valid?("hello") #=> false

Return: [true/false]

Returns:

  • (Boolean)


33
34
35
# File 'lib/sixarm_ruby_xid/xid.rb', line 33

def self.valid?(string)
  !!(string && string.is_a?(String) && string.size == 32 && string =~ /\A[0-9a-f]{32}\z/)
end