semver_check 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db31bcb9b2466e8ee280a5525e9ee0d65d45e9a2a2188e794ffcec1ee83c7906
4
- data.tar.gz: b4f54d4f208a8c7359d16a7ffb4913bf265c8d02d9e4a3f702a0aa1725358c19
3
+ metadata.gz: bdc39dd369f29e6ebe018a881038e1a0f0255be4238717016588ebfc68a92e5e
4
+ data.tar.gz: 549fc59387e661c8e2c0b7c7454fd12ca3f6993f142884b5773a14addbf4f832
5
5
  SHA512:
6
- metadata.gz: 15157f1fcb03eac2f3d38bab2b024548169c577fa6aa6828c2e5265a8d572e6619ce9db1c9b39f96de4be7120791e4026ff68d3c0b05c6a255f28be7ece70b14
7
- data.tar.gz: 298908ebb2740fdcfed0e1c8a2ffcbe5e730e4947b6b46a4ad09aaa38b00429e64ee999e19b1d3528b1841b66970c261221c4693d19d2186520a951120212888
6
+ metadata.gz: 14e21f9954a5555fe8e233029e30008ca5f489db65c2cd0ff7c59dcd89c0a2e8c8d5a19c09a8f94cd26110f2338c5ceebafcc27bd05749aa5ff56bfe4fa90ce5
7
+ data.tar.gz: 17db55a207756a196f7a6b8a2f0ebabffb6c3d7c8415366909a8a8afe2cdd1e5a95cb9617a43a723ee57e8373f4d06c46741a3fbb585e44b6958fc8d56557e1b
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SemverCheck
2
2
 
3
- TODO: Delete this and the text above, and describe your gem
3
+ A simple gem containing one class `SemverCheck::Compare` to compare SemVer strings.
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,7 +14,19 @@ If bundler is not being used to manage dependencies, install the gem by executin
14
14
 
15
15
  ## Usage
16
16
 
17
- TODO: Write usage instructions here
17
+ The Compare class includes the Comparable module, so all methods from there and in addition != are available.
18
+
19
+ ````ruby
20
+ SemverCheck::Compare.new("1.2.3") < SemverCheck::Compare.new("1.2.4") # true
21
+ SemverCheck::Compare.new("1.2.3") > SemverCheck::Compare.new("1.2.2") # true
22
+ SemverCheck::Compare.new("1.2.3") <= SemverCheck::Compare.new("1.2.3") # true
23
+ SemverCheck::Compare.new("1.2.3") >= SemverCheck::Compare.new("1.2.3") # true
24
+ # works also with prerelease
25
+ SemverCheck::Compare.new("1.2.3-alpha") < SemverCheck::Compare.new("1.2.3-beta") # true
26
+ SemverCheck::Compare.new("1.2.3-alpha.2") > SemverCheck::Compare.new("1.2.3-alpha.1") # true
27
+ ````
28
+
29
+ You get the idea. If you wanna know more check out the `test/test_compare.rb` file.
18
30
 
19
31
  ## Development
20
32
 
@@ -24,7 +36,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
24
36
 
25
37
  ## Contributing
26
38
 
27
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/semver_check.
39
+ Bug reports and pull requests are welcome on GitHub at https://github.com/the-pulli/semver_check.
28
40
 
29
41
  ## License
30
42
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SemverCheck
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/semver_check.rb CHANGED
@@ -22,23 +22,17 @@ module SemverCheck
22
22
  )
23
23
  \Z/x
24
24
 
25
- INT_RESULT = {
26
- n: 1,
27
- o: -1,
28
- s: 0
29
- }.freeze
30
-
31
- MAPPING_TABLE = [
32
- %w[n n],
33
- %w[sn n],
34
- %w[ssn n],
35
- %w[o o],
36
- %w[so o],
37
- %w[sso o],
38
- %w[sss s]
39
- ]
40
-
41
- ORDER = %i[major minor patch prerelease].freeze
25
+ MAPPING_TABLE = [
26
+ ["n", 1],
27
+ ["sn", 1],
28
+ ["ssn", 1],
29
+ ["o", -1],
30
+ ["so", -1],
31
+ ["sso", -1],
32
+ ["sss", 0]
33
+ ].freeze
34
+
35
+ VERSION_PARTS = %i[major minor patch].freeze
42
36
 
43
37
  attr_reader :version
44
38
 
@@ -63,7 +57,7 @@ module SemverCheck
63
57
  private
64
58
 
65
59
  def comparison(other)
66
- comparison = ORDER.take(3).map do |part|
60
+ comparison = VERSION_PARTS.map do |part|
67
61
  if @version[part] == other.version[part]
68
62
  "s"
69
63
  elsif @version[part] > other.version[part]
@@ -72,7 +66,7 @@ module SemverCheck
72
66
  "o"
73
67
  end
74
68
  end.join
75
- prerelease_sort(other, comparison)
69
+ buildmetadata_sort(other, prerelease_sort(other, comparison))
76
70
  end
77
71
 
78
72
  def prerelease_sort(other, comparison)
@@ -93,14 +87,26 @@ module SemverCheck
93
87
  end
94
88
  end
95
89
 
96
- def match(comparison)
97
- result = MAPPING_TABLE.map do |m|
98
- m.last if comparison.start_with? m.first
99
- end.compact
100
-
101
- raise "Too many results" if result.length > 1
90
+ def buildmetadata_sort(other, comparison)
91
+ v_build = @version[:buildmetadata]
92
+ o_build = other.version[:buildmetadata]
93
+ if comparison.zero?
94
+ if v_build.nil? && !o_build.nil?
95
+ 1
96
+ elsif !v_build.nil? && o_build.nil?
97
+ -1
98
+ else
99
+ 0
100
+ end
101
+ else
102
+ comparison
103
+ end
104
+ end
102
105
 
103
- INT_RESULT[result.first.to_sym]
106
+ def match(comparison)
107
+ MAPPING_TABLE.find do |m|
108
+ comparison.start_with?(m.first)
109
+ end.last
104
110
  end
105
111
 
106
112
  def prepare_version(version)
@@ -109,7 +115,7 @@ module SemverCheck
109
115
 
110
116
  version = version.named_captures.transform_keys(&:to_sym)
111
117
  # convert major, minor and patch to int
112
- ORDER.take(3).each { |part| version[part] = version[part].to_i }
118
+ VERSION_PARTS.each { |part| version[part] = version[part].to_i }
113
119
  version
114
120
  end
115
121
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semver_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - PuLLi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-25 00:00:00.000000000 Z
11
+ date: 2022-12-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Fun project to compare two SemVer strings with a bit of regex magic.
14
14
  email: