Class: Transit::UUID
- Inherits:
-
Object
- Object
- Transit::UUID
- Defined in:
- lib/transit/transit_types.rb
Overview
Represents a transit UUID extension type.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #hash ⇒ Object
-
#initialize(uuid_or_most_significant_bits = nil, least_significant_bits = nil) ⇒ UUID
constructor
A new instance of UUID.
- #inspect ⇒ Object
- #least_significant_bits ⇒ Object
- #most_significant_bits ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(uuid_or_most_significant_bits = nil, least_significant_bits = nil) ⇒ UUID
Returns a new instance of UUID.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/transit/transit_types.rb', line 82 def initialize(uuid_or_most_significant_bits=nil,least_significant_bits=nil) case uuid_or_most_significant_bits when String @string_rep = uuid_or_most_significant_bits when Array @numeric_rep = uuid_or_most_significant_bits.map {|n| twos_complement(n)} when Numeric @numeric_rep = [twos_complement(uuid_or_most_significant_bits), twos_complement(least_significant_bits)] when nil @string_rep = SecureRandom.uuid else raise "Can't build UUID from #{uuid_or_most_significant_bits.inspect}" end end |
Class Method Details
.random ⇒ Object
78 79 80 |
# File 'lib/transit/transit_types.rb', line 78 def self.random new end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
113 114 115 116 117 118 119 120 121 |
# File 'lib/transit/transit_types.rb', line 113 def ==(other) return false unless other.is_a?(self.class) if @numeric_rep other.most_significant_bits == most_significant_bits && other.least_significant_bits == least_significant_bits else other.to_s == @string_rep end end |
#hash ⇒ Object
124 125 126 |
# File 'lib/transit/transit_types.rb', line 124 def hash most_significant_bits.hash + least_significant_bits.hash end |
#inspect ⇒ Object
109 110 111 |
# File 'lib/transit/transit_types.rb', line 109 def inspect @inspect ||= "<#{self.class} \"#{to_s}\">" end |
#least_significant_bits ⇒ Object
105 106 107 |
# File 'lib/transit/transit_types.rb', line 105 def least_significant_bits @least_significant_bits ||= numeric_rep[1] end |
#most_significant_bits ⇒ Object
101 102 103 |
# File 'lib/transit/transit_types.rb', line 101 def most_significant_bits @most_significant_bits ||= numeric_rep[0] end |
#to_s ⇒ Object
97 98 99 |
# File 'lib/transit/transit_types.rb', line 97 def to_s @string_rep ||= numbers_to_string end |