Class: XID
- Inherits:
-
Object
- Object
- XID
- Defined in:
- lib/sixarm_ruby_xid/xid.rb
Class Method Summary collapse
-
.generate ⇒ Object
Generate a new XID string.
-
.parse(object) ⇒ Object
Parse any object to an XID string.
-
.valid?(string) ⇒ Boolean
Is a given XID string valid?.
Class Method Details
.generate ⇒ Object
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
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]
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 |