Class: VersionSerializer::Version

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/version_serializer/version.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(major, minor) ⇒ Version

Returns a new instance of Version.



7
8
9
10
# File 'lib/version_serializer/version.rb', line 7

def initialize major, minor
  @major = major
  @minor = minor
end

Instance Attribute Details

#majorObject

Returns the value of attribute major.



5
6
7
# File 'lib/version_serializer/version.rb', line 5

def major
  @major
end

#minorObject

Returns the value of attribute minor.



5
6
7
# File 'lib/version_serializer/version.rb', line 5

def minor
  @minor
end

Class Method Details

.dump(object) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/version_serializer/version.rb', line 17

def self.dump (object)
  return nil if object.nil?

  if object.respond_to?(:major)
    ("%d.%03d" % [object.major, object.minor]).to_f
  else
    object
  end
end

.from_string(data) ⇒ Object



27
28
29
30
# File 'lib/version_serializer/version.rb', line 27

def self.from_string data
  return nil if data.nil?
  self.new(*data.to_s.split('.').map(&:to_i))
end

.load(data) ⇒ Object



12
13
14
15
# File 'lib/version_serializer/version.rb', line 12

def self.load (data)
  return nil if data.nil?
  self.new(*('%.3f' % data).split('.').map(&:to_i))
end

.range(min, max) ⇒ Object



32
33
34
# File 'lib/version_serializer/version.rb', line 32

def self.range min, max
  self.dump(min) .. self.dump(max)
end

Instance Method Details

#<=>(other) ⇒ Object



37
38
39
40
41
# File 'lib/version_serializer/version.rb', line 37

def <=> other
  return nil if other.nil?

  [major, minor] <=> [other.major, other.minor]
end

#as_json(options = {}) ⇒ Object



43
44
45
# File 'lib/version_serializer/version.rb', line 43

def as_json options = {}
  to_s
end

#to_sObject



47
48
49
50
51
# File 'lib/version_serializer/version.rb', line 47

def to_s
  return nil if major.nil? || minor.nil?

  "%d.%d" % [major, minor]
end