gversion 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/gversion.rb +74 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c6cf84397949f276be5090aa83d623e5853bf8fb
|
4
|
+
data.tar.gz: b06b08391f522a8d6bc1ffbe912884cd57ef8a35
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6e706233e41dcb4ab12790ca715db751532666ddd272c96049b1f69baa1334e7aa17fdfe2308ac195ae013c96766986f9eeb42ed87862394426e2a50c9d06802
|
7
|
+
data.tar.gz: a655c57533cc41dd5c42dba0f302ab0839d54a6ddb4a526f7cff593a12946601d5f722d6348dd227fd603ed95e4219493a7c5f4b4c9b409f0ba5ecc39774a639
|
data/lib/gversion.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
class Gversion
|
2
|
+
include Comparable
|
3
|
+
|
4
|
+
PATTERN = /^(?<major>0|[0-9][0-9]*)(\.(?<minor>0|[0-9][0-9]*))?(\.(?<revision>0|[0-9][0-9]*))?$/
|
5
|
+
|
6
|
+
attr_reader :major, :minor, :revision
|
7
|
+
|
8
|
+
def initialize(options)
|
9
|
+
[:major, :minor, :revision].each do |field|
|
10
|
+
validate_field(field, options[field])
|
11
|
+
instance_variable_set("@#{field}", options[field] || 0)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.parse(string)
|
16
|
+
match = PATTERN.match(string)
|
17
|
+
return nil unless match
|
18
|
+
|
19
|
+
self[match[:major], match[:minor], match[:revision]]
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.[](*array)
|
23
|
+
new(major: array[0].to_i,
|
24
|
+
minor: array[1].to_i,
|
25
|
+
revision: array[2].to_i)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.parse!(string, _options = {})
|
29
|
+
parse(string) || (fail ArgumentError, 'invalid version format')
|
30
|
+
end
|
31
|
+
|
32
|
+
def <=>(other)
|
33
|
+
comparison = 0
|
34
|
+
[:major, :minor, :revision].each do |field|
|
35
|
+
comparison = send(field) <=> other.send(field)
|
36
|
+
break if comparison != 0
|
37
|
+
end
|
38
|
+
|
39
|
+
comparison
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
@as_string ||= [major, minor, revision].join('.')
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_f
|
47
|
+
# Will be wrong float number if minor > 9
|
48
|
+
@as_float ||= [major, minor].join('.').to_f
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.greater_or_equal_than_version?(version, from_version)
|
52
|
+
self.parse!(version) >= self.parse(from_version)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.lesser_than_version?(version, from_version)
|
56
|
+
!self.greater_or_equal_than_version?(version, from_version)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.in_version_range?(version, from_version, to_version)
|
60
|
+
v = self.parse!(version)
|
61
|
+
min = self.parse!(from_version)
|
62
|
+
max = self.parse!(to_version)
|
63
|
+
|
64
|
+
v.between?(min, max)
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def validate_field(field, value)
|
70
|
+
return unless value
|
71
|
+
|
72
|
+
fail ArgumentError, "#{field} field must be an integer" unless value.is_a?(Integer)
|
73
|
+
end
|
74
|
+
end
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gversion
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- konfortes@gmail.com
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-27 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Versions validations and comparisons!!!
|
14
|
+
email: konfortes@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/gversion.rb
|
20
|
+
homepage: http://rubygems.org/gems/gversion
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.4.8
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Versions validations and comparisons
|
44
|
+
test_files: []
|