class ZID

Public Class Methods

generate() click to toggle source

Generate a new ZID string.

Example:

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

Return: [String] A new ZID string

# File lib/sixarm_ruby_zid/zid.rb, line 19
def self.generate
  SecureRandom.hex
end
parse(object) click to toggle source

Parse any object to an ZID 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 = ZID.parse("***FFAD30A1-BE5E-B511-9ED8-976CAB0281B6***")
#=> "ffad30a1be5eb5119ed8976cab0281b6"

Return: [ZID] A new ZID

# File lib/sixarm_ruby_zid/zid.rb, line 58
def self.parse(object)
  zid = object.to_s.downcase.gsub(/[^0-9a-f]/,'')[0...32]
  raise ArgumentError if !ZID.valid?(zid)
  zid
end
valid?(string) click to toggle source

Is a given ZID string valid?

Example:

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

Implemenation note: this method tests the string class, then size, then regex. The test of the string size comes before the regex because the test of the size runs faster, and is an optimization for fast-fail because when the string is not size 32, then the regex doesn't need to be run.

Return: [true/false]

# File lib/sixarm_ruby_zid/zid.rb, line 38
def self.valid?(string)
  !!(string && string.is_a?(String) && string.size == 32 && string =~ /\A[0-9a-f]+\z/)
end