semver_check 0.1.1 → 0.1.3

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 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: