semver_dialects 1.4.0 → 1.5.1

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: 477a8f6b9d50ce0b31df72e328f683e585e4eb191ea02e44a42101dba4e7be4a
4
- data.tar.gz: c636be1d60cab7452ccda9963898eee992d969e3a8b490656fb8b8def27c3642
3
+ metadata.gz: c1cb3a87022079c747bcd293b3cd933d77895a57d588d8f8ce2c810c64c6887d
4
+ data.tar.gz: effb283d7ac372fe8d5f4ca591502587093e46351f14865d2aba2bec9c76bc19
5
5
  SHA512:
6
- metadata.gz: 134eb5c82a142e260bd946954383050966579cb40983e7ca6094c9d66001565eea5cb1250deeb84811b7a3556a5bde6c3eb53ca48815dda6a361649ade1fc537
7
- data.tar.gz: 6039fc1f6d4163c7813e7f4155c93a8d5f2aa4ce43cfe62fb75784d524532a2662e8c8831d43c2e88592539955385981f60b52dfa5577657ce68580dd6720167
6
+ metadata.gz: 93c31bfb3463782eaf8a2a18c1f37f47a6b5e8963fc4f1be7079a82171182562f6055546a54b6415120d13fec5810b1892be269bfc98ef90efc56bbc17bdd768
7
+ data.tar.gz: 235385f7356dbc06085b370de6998606771aedcfff40b88ec79578bf1e1ef931cf568d1ab66abb49350075960b129c6a5515d7bb3970d6f4715b3db23dee0fcf
@@ -2,19 +2,22 @@ require_relative "version_cut"
2
2
  require_relative "version_interval"
3
3
 
4
4
  module VersionParser
5
- def self.parse(versionstring)
6
- if (versionstring == "=*")
7
- # special case = All Versions
8
- return VersionInterval.new(IntervalType::LEFT_OPEN | IntervalType::RIGHT_OPEN, BelowAll.new(), AboveAll.new())
9
- end
5
+ VERSION_SPECIFIER_REGEX = /(?<op>[><=]+) *(?<version>[a-zA-Z0-9\-_\.\*]+)/
6
+
7
+ def self.parse(version_constraint)
8
+ return self.all_versions if version_constraint == "=*"
9
+
10
+ interval = self.all_versions
11
+
12
+ version_constraint.split(" ").each do |version_specifier|
13
+ matches = VERSION_SPECIFIER_REGEX.match(version_specifier)
14
+
15
+ if matches.nil? || matches.size == 0
16
+ raise SemverDialects::Error, "could not parse version specifier \"#{version_specifier}\" from version constraint \"#{version_constraint}\""
17
+ end
10
18
 
11
- version_items = versionstring.split(" ")
12
- interval = VersionInterval.new(IntervalType::LEFT_OPEN | IntervalType::RIGHT_OPEN, BelowAll.new(), AboveAll.new())
13
- version_items.each do
14
- |version_item|
15
- matches = version_item.match /(?<op>[><=]+) *(?<version>[a-zA-Z0-9\-_\.\*]+)/
16
- version_string = matches[:version]
17
- case matches[:op]
19
+ op, version_string = matches[:op], matches[:version]
20
+ case op
18
21
  when ">="
19
22
  new_interval = VersionInterval.new(IntervalType::LEFT_CLOSED | IntervalType::RIGHT_OPEN, VersionCut.new(version_string), AboveAll.new())
20
23
  interval = interval.intersect(new_interval)
@@ -32,6 +35,13 @@ module VersionParser
32
35
  interval = interval.intersect(new_interval)
33
36
  end
34
37
  end
38
+
35
39
  interval
36
40
  end
41
+
42
+ private
43
+
44
+ def self.all_versions
45
+ VersionInterval.new(IntervalType::LEFT_OPEN | IntervalType::RIGHT_OPEN, BelowAll.new(), AboveAll.new())
46
+ end
37
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SemverDialects
4
- VERSION = '1.4.0'
4
+ VERSION = '1.5.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semver_dialects
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Thome
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-10-24 00:00:00.000000000 Z
13
+ date: 2024-01-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pastel
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.2.0
35
+ version: '1.3'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.2.0
42
+ version: '1.3'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: tty-command
45
45
  requirement: !ruby/object:Gem::Requirement