versionaire 8.4.0 → 9.1.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 +4 -4
- checksums.yaml.gz.sig +2 -3
- data.tar.gz.sig +0 -0
- data/README.adoc +91 -31
- data/lib/versionaire.rb +4 -4
- data/lib/versionaire/cast.rb +12 -0
- data/lib/versionaire/errors/cast.rb +9 -0
- data/lib/versionaire/{conversion.rb → function.rb} +17 -16
- data/lib/versionaire/identity.rb +1 -1
- data/lib/versionaire/version.rb +27 -20
- metadata +11 -179
- metadata.gz.sig +0 -0
- data/lib/versionaire/errors/conversion.rb +0 -9
- data/lib/versionaire/filler.rb +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7dd4a85312295a2cc1e5aa13d6252156a095da2718fe8bff2afaa6d4a5ca0689
|
|
4
|
+
data.tar.gz: 6eadfe1ca935a2e35681a189562ee9fd5a6e49c9c757774ec977ee2e21820399
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21b92646e48340c1fdde455bf0d45aed944e3d63440e304c86ed7d3b66877cfd1d66e9c7e49468a7e340d96015ecc8e995f64878755764f8bda5e98df4df6daa
|
|
7
|
+
data.tar.gz: 7a5d2418831d0c11f0802bc5f3a554b610a39a21736fef4b08b1130963b594c074c4127871288eb05446b053ccebe4e6fbfbf68cd5cf74c8d16a564349d161b8
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
dq�
|
|
1
|
+
��tN�
|
|
2
|
+
��V=�Βk?!*V��ϖ�
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.adoc
CHANGED
|
@@ -55,10 +55,10 @@ A new version can be initialized in a variety of ways:
|
|
|
55
55
|
|
|
56
56
|
[source,ruby]
|
|
57
57
|
----
|
|
58
|
-
Versionaire::Version.new
|
|
59
|
-
Versionaire::Version[major: 1]
|
|
60
|
-
Versionaire::Version[major: 1, minor: 2]
|
|
61
|
-
Versionaire::Version[major: 1, minor: 2, patch: 3]
|
|
58
|
+
Versionaire::Version.new # "0.0.0"
|
|
59
|
+
Versionaire::Version[major: 1] # "1.0.0"
|
|
60
|
+
Versionaire::Version[major: 1, minor: 2] # "1.2.0"
|
|
61
|
+
Versionaire::Version[major: 1, minor: 2, patch: 3] # "1.2.3"
|
|
62
62
|
----
|
|
63
63
|
|
|
64
64
|
=== Equality
|
|
@@ -74,18 +74,18 @@ version_a = Versionaire::Version[major: 1]
|
|
|
74
74
|
version_b = Versionaire::Version[major: 2]
|
|
75
75
|
version_c = Versionaire::Version[major: 1]
|
|
76
76
|
|
|
77
|
-
version_a == version_a
|
|
78
|
-
version_a == version_b
|
|
79
|
-
version_a == version_c
|
|
77
|
+
version_a == version_a # true
|
|
78
|
+
version_a == version_b # false
|
|
79
|
+
version_a == version_c # true
|
|
80
80
|
----
|
|
81
81
|
|
|
82
82
|
Knowning this, versions can be compared against one another too:
|
|
83
83
|
|
|
84
84
|
[source,ruby]
|
|
85
85
|
----
|
|
86
|
-
version_a > version_b
|
|
87
|
-
version_a < version_b
|
|
88
|
-
version_a.between? version_c, version_b
|
|
86
|
+
version_a > version_b # false
|
|
87
|
+
version_a < version_b # true
|
|
88
|
+
version_a.between? version_c, version_b # true
|
|
89
89
|
----
|
|
90
90
|
|
|
91
91
|
==== Hash (`#eql?`)
|
|
@@ -106,16 +106,16 @@ version_a = Versionaire::Version[major: 1]
|
|
|
106
106
|
version_b = Versionaire::Version[major: 2]
|
|
107
107
|
version_c = Versionaire::Version[major: 1]
|
|
108
108
|
|
|
109
|
-
version_a.equal? version_a
|
|
110
|
-
version_a.equal? version_b
|
|
111
|
-
version_a.equal? version_c
|
|
109
|
+
version_a.equal? version_a # true
|
|
110
|
+
version_a.equal? version_b # false
|
|
111
|
+
version_a.equal? version_c # false
|
|
112
112
|
----
|
|
113
113
|
|
|
114
114
|
=== Conversions
|
|
115
115
|
|
|
116
|
-
==== Function
|
|
116
|
+
==== Function
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
Use the `Versionaire::Version` function to explicitly cast to a version:
|
|
119
119
|
|
|
120
120
|
[source,ruby]
|
|
121
121
|
----
|
|
@@ -128,7 +128,30 @@ Versionaire::Version version
|
|
|
128
128
|
----
|
|
129
129
|
|
|
130
130
|
Each of these conversions will result in a version object that represents "`1.0.0`". When attempting
|
|
131
|
-
to convert an unsupported type, a `+Versionaire::Errors::
|
|
131
|
+
to convert an unsupported type, a `+Versionaire::Errors::Cast+` exception will be thrown.
|
|
132
|
+
|
|
133
|
+
==== Refinement
|
|
134
|
+
|
|
135
|
+
Building upon the examples shown above, there is an even more elegant solution where you can use
|
|
136
|
+
this gem's built-in link:https://www.alchemists.io/articles/ruby_refinements[refinement] support:
|
|
137
|
+
|
|
138
|
+
[source,ruby]
|
|
139
|
+
----
|
|
140
|
+
using Versionaire::Cast
|
|
141
|
+
|
|
142
|
+
version = Versionaire::Version[major: 1]
|
|
143
|
+
|
|
144
|
+
Version "1.0.0"
|
|
145
|
+
Version [1, 0, 0]
|
|
146
|
+
Version major: 1, minor: 0, patch: 0
|
|
147
|
+
Version version
|
|
148
|
+
----
|
|
149
|
+
|
|
150
|
+
By adding `using Versionaire::Cast` to your implementation, this allows Versionaire to refine
|
|
151
|
+
`Kernel` so you have a top-level `Version` conversion function much like Kernel's native support for
|
|
152
|
+
`Integer`, `String`, `Array`, `Hash`, etc. The benefit to this approach is it reduces the amount of
|
|
153
|
+
typing, doesn't polute your entire object space like a monkey patch would, and provides a idiomatic
|
|
154
|
+
approach to casting like any other primitive.
|
|
132
155
|
|
|
133
156
|
==== Implicit
|
|
134
157
|
|
|
@@ -136,7 +159,7 @@ Implicit conversion to a `+String+` is supported:
|
|
|
136
159
|
|
|
137
160
|
[source,ruby]
|
|
138
161
|
----
|
|
139
|
-
"1.0.0".match Versionaire::Version[major: 1]
|
|
162
|
+
"1.0.0".match Versionaire::Version[major: 1] # <MatchData "1.0.0">
|
|
140
163
|
----
|
|
141
164
|
|
|
142
165
|
==== Explicit
|
|
@@ -147,9 +170,9 @@ Explicit conversion to a `String`, `Array`, or `Hash` is supported:
|
|
|
147
170
|
----
|
|
148
171
|
version = Versionaire::Version.new
|
|
149
172
|
|
|
150
|
-
version.to_s
|
|
151
|
-
version.to_a
|
|
152
|
-
version.to_h
|
|
173
|
+
version.to_s # "0.0.0"
|
|
174
|
+
version.to_a # [0, 0, 0]
|
|
175
|
+
version.to_h # {major: 0, minor: 0, patch: 0}
|
|
153
176
|
----
|
|
154
177
|
|
|
155
178
|
=== Comparisons
|
|
@@ -162,39 +185,76 @@ work. Example:
|
|
|
162
185
|
version_1 = Versionaire::Version "1.0.0"
|
|
163
186
|
version_2 = Versionaire::Version "2.0.0"
|
|
164
187
|
|
|
165
|
-
version_1 < version_2
|
|
166
|
-
version_1 <= version_2
|
|
167
|
-
version_1 == version_2
|
|
168
|
-
version_1 > version_2
|
|
169
|
-
version_1 >= version_2
|
|
170
|
-
version_1.between? version_1, version_2
|
|
171
|
-
version_1.clamp version_1, version_2
|
|
188
|
+
version_1 < version_2 # true
|
|
189
|
+
version_1 <= version_2 # true
|
|
190
|
+
version_1 == version_2 # false (see Equality section above for details)
|
|
191
|
+
version_1 > version_2 # false
|
|
192
|
+
version_1 >= version_2 # false
|
|
193
|
+
version_1.between? version_1, version_2 # true
|
|
194
|
+
version_1.clamp version_1, version_2 # version_1 (added in Ruby 2.4.0)
|
|
172
195
|
----
|
|
173
196
|
|
|
174
197
|
=== Math
|
|
175
198
|
|
|
176
|
-
Versions can be added
|
|
199
|
+
Versions can be added, subtracted, sequentially increased, or sequentially decreased from each
|
|
200
|
+
other.
|
|
177
201
|
|
|
178
202
|
==== Addition
|
|
179
203
|
|
|
204
|
+
Versions can be added together to produce a resulting version sum.
|
|
205
|
+
|
|
180
206
|
[source,ruby]
|
|
181
207
|
----
|
|
182
208
|
version_1 = Versionaire::Version[major: 1, minor: 2, patch: 3]
|
|
183
209
|
version_2 = Versionaire::Version[major: 2, minor: 5, patch: 7]
|
|
184
|
-
version_1 + version_2
|
|
210
|
+
version_1 + version_2 # "3.7.10"
|
|
185
211
|
----
|
|
186
212
|
|
|
187
213
|
==== Subtraction
|
|
188
214
|
|
|
215
|
+
Versions can be substracted from each other as long as there isn't a negative result.
|
|
216
|
+
|
|
189
217
|
[source,ruby]
|
|
190
218
|
----
|
|
191
219
|
version_1 = Versionaire::Version[major: 1, minor: 2, patch: 3]
|
|
192
220
|
version_2 = Versionaire::Version[major: 1, minor: 1, patch: 1]
|
|
193
|
-
version_1 - version_2
|
|
221
|
+
version_1 - version_2 # "0.1.2"
|
|
194
222
|
|
|
195
223
|
version_1 = Versionaire::Version[major: 1]
|
|
196
224
|
version_2 = Versionaire::Version[major: 5]
|
|
197
|
-
version_1 - version_2
|
|
225
|
+
version_1 - version_2 # Versionaire::Errors::NegativeNumber
|
|
226
|
+
----
|
|
227
|
+
|
|
228
|
+
==== Up
|
|
229
|
+
|
|
230
|
+
Versions can be sequentially increased or given a specific version to jump to.
|
|
231
|
+
|
|
232
|
+
[source,ruby]
|
|
233
|
+
----
|
|
234
|
+
version = Versionaire::Version[major: 1, minor: 1, patch: 1]
|
|
235
|
+
version.up :major # => "2.1.1"
|
|
236
|
+
version.up :major, 3 # => "4.1.1"
|
|
237
|
+
version.up :minor # => "1.2.1"
|
|
238
|
+
version.up :minor, 3 # => "1.4.1"
|
|
239
|
+
version.up :patch # => "1.1.2"
|
|
240
|
+
version.up :patch, 3 # => "1.1.4"
|
|
241
|
+
----
|
|
242
|
+
|
|
243
|
+
==== Down
|
|
244
|
+
|
|
245
|
+
Versions can be sequentially decreased or given a specific version to jump to as long as the result
|
|
246
|
+
is not negative.
|
|
247
|
+
|
|
248
|
+
[source,ruby]
|
|
249
|
+
----
|
|
250
|
+
version = Versionaire::Version[major: 5, minor: 5, patch: 5]
|
|
251
|
+
version.down :major # => "4.5.5"
|
|
252
|
+
version.down :major, 3 # => "2.5.5"
|
|
253
|
+
version.down :minor # => "5.4.5"
|
|
254
|
+
version.down :minor, 3 # => "5.2.5"
|
|
255
|
+
version.down :patch # => "5.5.4"
|
|
256
|
+
version.down :patch, 3 # => "5.5.2"
|
|
257
|
+
version.down :major, 6 # => Versionaire::Errors::NegativeNumber
|
|
198
258
|
----
|
|
199
259
|
|
|
200
260
|
== Development
|
data/lib/versionaire.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "versionaire/identity"
|
|
3
4
|
require "versionaire/errors/base"
|
|
4
|
-
require "versionaire/errors/
|
|
5
|
+
require "versionaire/errors/cast"
|
|
5
6
|
require "versionaire/errors/invalid_number"
|
|
6
7
|
require "versionaire/errors/negative_number"
|
|
7
|
-
require "versionaire/filler"
|
|
8
|
-
require "versionaire/conversion"
|
|
9
|
-
require "versionaire/identity"
|
|
10
8
|
require "versionaire/version"
|
|
9
|
+
require "versionaire/function"
|
|
10
|
+
require "versionaire/cast"
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "refinements/arrays"
|
|
4
|
+
require "refinements/structs"
|
|
5
|
+
|
|
3
6
|
# The gem namespace.
|
|
4
7
|
module Versionaire
|
|
5
8
|
module_function
|
|
@@ -20,50 +23,48 @@ module Versionaire
|
|
|
20
23
|
|
|
21
24
|
# Aids with converting objects into valid versions.
|
|
22
25
|
class Converter
|
|
23
|
-
|
|
26
|
+
using Refinements::Arrays
|
|
27
|
+
using Refinements::Structs
|
|
28
|
+
|
|
29
|
+
def initialize object
|
|
24
30
|
@object = object
|
|
25
|
-
@filler = filler
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def from_string
|
|
29
34
|
body = "Use: <major>.<minor>.<patch>, <major>.<minor>, <major>, or empty string."
|
|
30
|
-
fail Errors::
|
|
35
|
+
fail Errors::Cast, error_message(object, body) unless Version.pattern.match? object
|
|
31
36
|
|
|
32
|
-
|
|
37
|
+
string_to_version
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
def from_array
|
|
36
41
|
body = "Use: [<major>, <minor>, <patch>], [<major>, <minor>], [<major>], or []."
|
|
37
|
-
fail Errors::
|
|
42
|
+
fail Errors::Cast, error_message(object, body) unless (0..3).cover? object.size
|
|
38
43
|
|
|
39
|
-
Version
|
|
44
|
+
Version.with_positions(*object.pad(0, max: 3))
|
|
40
45
|
end
|
|
41
46
|
|
|
42
47
|
def from_hash
|
|
43
48
|
body = "Use: {major: <major>, minor: <minor>, patch: <patch>}, " \
|
|
44
49
|
"{major: <major>, minor: <minor>}, {major: <major>}, or {}."
|
|
45
|
-
fail Errors::
|
|
50
|
+
fail Errors::Cast, error_message(object, body) unless required_keys?
|
|
46
51
|
|
|
47
52
|
Version[**object]
|
|
48
53
|
end
|
|
49
54
|
|
|
50
55
|
def from_object
|
|
51
|
-
fail Errors::
|
|
56
|
+
fail Errors::Cast, error_message(object, "Use: String, Array, Hash, or Version.")
|
|
52
57
|
end
|
|
53
58
|
|
|
54
59
|
private
|
|
55
60
|
|
|
56
61
|
attr_reader :object, :filler
|
|
57
62
|
|
|
58
|
-
def
|
|
59
|
-
object.split(
|
|
63
|
+
def string_to_version
|
|
64
|
+
object.split(Version.delimiter)
|
|
60
65
|
.map(&:to_i)
|
|
61
|
-
.then { |numbers|
|
|
62
|
-
.then { |arguments| Version.
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def array_to_arguments
|
|
66
|
-
Version.arguments(*filler.call(object))
|
|
66
|
+
.then { |numbers| numbers.pad 0, max: 3 }
|
|
67
|
+
.then { |arguments| Version.with_positions(*arguments) }
|
|
67
68
|
end
|
|
68
69
|
|
|
69
70
|
def required_keys?
|
data/lib/versionaire/identity.rb
CHANGED
data/lib/versionaire/version.rb
CHANGED
|
@@ -1,41 +1,47 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
DELIMITER = "."
|
|
3
|
+
require "refinements/structs"
|
|
5
4
|
|
|
5
|
+
module Versionaire
|
|
6
6
|
# An immutable, semantic version value object.
|
|
7
7
|
Version = Struct.new :major, :minor, :patch, keyword_init: true do
|
|
8
8
|
include Comparable
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
using Refinements::Structs
|
|
11
|
+
|
|
12
|
+
def self.delimiter
|
|
13
|
+
"."
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.pattern
|
|
11
17
|
/
|
|
12
18
|
\A( # Start of string and OR.
|
|
13
19
|
\d* # Major only.
|
|
14
20
|
| # OR pipe.
|
|
15
21
|
\d+ # Major.
|
|
16
|
-
#{
|
|
22
|
+
#{delimiter}? # Delimiter.
|
|
17
23
|
\d* # Minor.
|
|
18
|
-
(?:#{
|
|
24
|
+
(?:#{delimiter}\d+) # Passive delimiter and patch.
|
|
19
25
|
)\z # End of OR and string.
|
|
20
26
|
/x
|
|
21
27
|
end
|
|
22
28
|
|
|
23
|
-
def self.arguments major, minor, patch
|
|
24
|
-
Hash[members.zip [major, minor, patch]]
|
|
25
|
-
end
|
|
26
|
-
|
|
27
29
|
def initialize major: 0, minor: 0, patch: 0
|
|
28
30
|
super
|
|
29
31
|
validate
|
|
30
32
|
freeze
|
|
31
33
|
end
|
|
32
34
|
|
|
35
|
+
def []= key, value
|
|
36
|
+
super(key, value).tap { validate }
|
|
37
|
+
end
|
|
38
|
+
|
|
33
39
|
def + other
|
|
34
|
-
|
|
40
|
+
revalue(other.to_h) { |previous, current| previous + current }
|
|
35
41
|
end
|
|
36
42
|
|
|
37
43
|
def - other
|
|
38
|
-
|
|
44
|
+
revalue(other.to_h) { |previous, current| previous - current }
|
|
39
45
|
end
|
|
40
46
|
|
|
41
47
|
def == other
|
|
@@ -48,25 +54,26 @@ module Versionaire
|
|
|
48
54
|
to_s <=> other.to_s
|
|
49
55
|
end
|
|
50
56
|
|
|
51
|
-
def
|
|
52
|
-
|
|
57
|
+
def down key, value = 1
|
|
58
|
+
revalue(key => value) { |previous, current| previous - current }
|
|
53
59
|
end
|
|
54
60
|
|
|
55
|
-
|
|
61
|
+
def up key, value = 1
|
|
62
|
+
revalue(key => value) { |previous, current| previous + current }
|
|
63
|
+
end
|
|
56
64
|
|
|
57
|
-
def
|
|
58
|
-
|
|
65
|
+
def to_s
|
|
66
|
+
to_a.join self.class.delimiter
|
|
59
67
|
end
|
|
60
68
|
|
|
69
|
+
alias_method :to_str, :to_s
|
|
70
|
+
alias_method :values, :to_a
|
|
71
|
+
|
|
61
72
|
private
|
|
62
73
|
|
|
63
74
|
def validate
|
|
64
75
|
fail Errors::InvalidNumber if to_a.any? { |number| !number.is_a? Integer }
|
|
65
76
|
fail Errors::NegativeNumber if to_a.any?(&:negative?)
|
|
66
77
|
end
|
|
67
|
-
|
|
68
|
-
def reduce other, action
|
|
69
|
-
to_a.zip(other.to_a).map { |pair| pair.reduce action }
|
|
70
|
-
end
|
|
71
78
|
end
|
|
72
79
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: versionaire
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 9.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brooke Kuhlmann
|
|
@@ -28,190 +28,22 @@ cert_chain:
|
|
|
28
28
|
2XV8FRa7/JimI07sPLC13eLY3xd/aYTi85Z782KIA4j0G8XEEWAX0ouBhlXPocZv
|
|
29
29
|
QWc=
|
|
30
30
|
-----END CERTIFICATE-----
|
|
31
|
-
date:
|
|
31
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
|
32
32
|
dependencies:
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
|
-
name:
|
|
34
|
+
name: refinements
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0
|
|
40
|
-
type: :
|
|
39
|
+
version: '8.0'
|
|
40
|
+
type: :runtime
|
|
41
41
|
prerelease: false
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '0
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: bundler-leak
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0.2'
|
|
54
|
-
type: :development
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0.2'
|
|
61
|
-
- !ruby/object:Gem::Dependency
|
|
62
|
-
name: guard-rspec
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - "~>"
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '4.7'
|
|
68
|
-
type: :development
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '4.7'
|
|
75
|
-
- !ruby/object:Gem::Dependency
|
|
76
|
-
name: pry
|
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - "~>"
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '0.13'
|
|
82
|
-
type: :development
|
|
83
|
-
prerelease: false
|
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
-
requirements:
|
|
86
|
-
- - "~>"
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '0.13'
|
|
89
|
-
- !ruby/object:Gem::Dependency
|
|
90
|
-
name: pry-byebug
|
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - "~>"
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '3.9'
|
|
96
|
-
type: :development
|
|
97
|
-
prerelease: false
|
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - "~>"
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '3.9'
|
|
103
|
-
- !ruby/object:Gem::Dependency
|
|
104
|
-
name: rake
|
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - "~>"
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '13.0'
|
|
110
|
-
type: :development
|
|
111
|
-
prerelease: false
|
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - "~>"
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '13.0'
|
|
117
|
-
- !ruby/object:Gem::Dependency
|
|
118
|
-
name: reek
|
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - "~>"
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '6.0'
|
|
124
|
-
type: :development
|
|
125
|
-
prerelease: false
|
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - "~>"
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '6.0'
|
|
131
|
-
- !ruby/object:Gem::Dependency
|
|
132
|
-
name: rspec
|
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - "~>"
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '3.10'
|
|
138
|
-
type: :development
|
|
139
|
-
prerelease: false
|
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
141
|
-
requirements:
|
|
142
|
-
- - "~>"
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
version: '3.10'
|
|
145
|
-
- !ruby/object:Gem::Dependency
|
|
146
|
-
name: rubocop
|
|
147
|
-
requirement: !ruby/object:Gem::Requirement
|
|
148
|
-
requirements:
|
|
149
|
-
- - "~>"
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version: '1.3'
|
|
152
|
-
type: :development
|
|
153
|
-
prerelease: false
|
|
154
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
155
|
-
requirements:
|
|
156
|
-
- - "~>"
|
|
157
|
-
- !ruby/object:Gem::Version
|
|
158
|
-
version: '1.3'
|
|
159
|
-
- !ruby/object:Gem::Dependency
|
|
160
|
-
name: rubocop-performance
|
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
|
162
|
-
requirements:
|
|
163
|
-
- - "~>"
|
|
164
|
-
- !ruby/object:Gem::Version
|
|
165
|
-
version: '1.8'
|
|
166
|
-
type: :development
|
|
167
|
-
prerelease: false
|
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
169
|
-
requirements:
|
|
170
|
-
- - "~>"
|
|
171
|
-
- !ruby/object:Gem::Version
|
|
172
|
-
version: '1.8'
|
|
173
|
-
- !ruby/object:Gem::Dependency
|
|
174
|
-
name: rubocop-rake
|
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
|
176
|
-
requirements:
|
|
177
|
-
- - "~>"
|
|
178
|
-
- !ruby/object:Gem::Version
|
|
179
|
-
version: '0.5'
|
|
180
|
-
type: :development
|
|
181
|
-
prerelease: false
|
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
183
|
-
requirements:
|
|
184
|
-
- - "~>"
|
|
185
|
-
- !ruby/object:Gem::Version
|
|
186
|
-
version: '0.5'
|
|
187
|
-
- !ruby/object:Gem::Dependency
|
|
188
|
-
name: rubocop-rspec
|
|
189
|
-
requirement: !ruby/object:Gem::Requirement
|
|
190
|
-
requirements:
|
|
191
|
-
- - "~>"
|
|
192
|
-
- !ruby/object:Gem::Version
|
|
193
|
-
version: '2.0'
|
|
194
|
-
type: :development
|
|
195
|
-
prerelease: false
|
|
196
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
197
|
-
requirements:
|
|
198
|
-
- - "~>"
|
|
199
|
-
- !ruby/object:Gem::Version
|
|
200
|
-
version: '2.0'
|
|
201
|
-
- !ruby/object:Gem::Dependency
|
|
202
|
-
name: simplecov
|
|
203
|
-
requirement: !ruby/object:Gem::Requirement
|
|
204
|
-
requirements:
|
|
205
|
-
- - "~>"
|
|
206
|
-
- !ruby/object:Gem::Version
|
|
207
|
-
version: '0.19'
|
|
208
|
-
type: :development
|
|
209
|
-
prerelease: false
|
|
210
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
211
|
-
requirements:
|
|
212
|
-
- - "~>"
|
|
213
|
-
- !ruby/object:Gem::Version
|
|
214
|
-
version: '0.19'
|
|
46
|
+
version: '8.0'
|
|
215
47
|
description:
|
|
216
48
|
email:
|
|
217
49
|
- brooke@alchemists.io
|
|
@@ -224,12 +56,12 @@ files:
|
|
|
224
56
|
- LICENSE.adoc
|
|
225
57
|
- README.adoc
|
|
226
58
|
- lib/versionaire.rb
|
|
227
|
-
- lib/versionaire/
|
|
59
|
+
- lib/versionaire/cast.rb
|
|
228
60
|
- lib/versionaire/errors/base.rb
|
|
229
|
-
- lib/versionaire/errors/
|
|
61
|
+
- lib/versionaire/errors/cast.rb
|
|
230
62
|
- lib/versionaire/errors/invalid_number.rb
|
|
231
63
|
- lib/versionaire/errors/negative_number.rb
|
|
232
|
-
- lib/versionaire/
|
|
64
|
+
- lib/versionaire/function.rb
|
|
233
65
|
- lib/versionaire/identity.rb
|
|
234
66
|
- lib/versionaire/version.rb
|
|
235
67
|
homepage: https://www.alchemists.io/projects/versionaire
|
|
@@ -248,14 +80,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
248
80
|
requirements:
|
|
249
81
|
- - "~>"
|
|
250
82
|
- !ruby/object:Gem::Version
|
|
251
|
-
version: '
|
|
83
|
+
version: '3.0'
|
|
252
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
85
|
requirements:
|
|
254
86
|
- - ">="
|
|
255
87
|
- !ruby/object:Gem::Version
|
|
256
88
|
version: '0'
|
|
257
89
|
requirements: []
|
|
258
|
-
rubygems_version: 3.
|
|
90
|
+
rubygems_version: 3.2.5
|
|
259
91
|
signing_key:
|
|
260
92
|
specification_version: 4
|
|
261
93
|
summary: Provides an immutable, thread-safe, and semantic version type.
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/lib/versionaire/filler.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Versionaire
|
|
4
|
-
class Filler
|
|
5
|
-
def initialize pad = 0, max: 2
|
|
6
|
-
@pad = pad
|
|
7
|
-
@max = max
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def call array
|
|
11
|
-
array.dup.fill pad, array.size..max
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
private
|
|
15
|
-
|
|
16
|
-
attr_reader :pad, :max
|
|
17
|
-
end
|
|
18
|
-
end
|