versionaire 10.5.0 → 11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f17a50efda09cafe9d5d2416d3ffe07ede58a1dd463f4355536075ad2c1b60af
4
- data.tar.gz: 81b1567024ff03840b9bd878efc2fed81e87bae23c2373d13298ddd91a28872e
3
+ metadata.gz: eb98e3cae752ba465daee34c368625932376bb16090c9ad35daaba8af285c361
4
+ data.tar.gz: '059670fecbd63ffeb7a16eadbac9ab1eba865611017b65c7c790a4fafbf189ea'
5
5
  SHA512:
6
- metadata.gz: 510a8a2d9f4e086380c22702fc106555b74d574adc4653c7a08f441fe6b3dc10adff70bc60fd1d54664bd35b4479fc9452d40657813bd70526f3c82595a10cfc
7
- data.tar.gz: 2a20ee6de5a824b08629c80285d166b2156b58c2335e03c65a5b0f58dc5193bcd73feff936a60919ce5258bc2c01448908c6d523c26397919cc2e44d3de6fbea
6
+ metadata.gz: 23f4803ab79920bfc77025d530f25184942ce2cd677374565d25daed0628516c920e7df50e4c5aa6258fd2168597623e53600cc68d7a7ce067ff1137d55b6a15
7
+ data.tar.gz: e5a5f455bff106e41487a359eae6084be25480f016a1d4df6e925d002eb6938f90556787bb91f5582c618fa48aeb5024f39b315491ed5cce9520886a964f3e0d
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -2,20 +2,21 @@
2
2
  :toclevels: 5
3
3
  :figure-caption!:
4
4
 
5
+ :semver_link: link:https://semver.org[Semantic Versioning]
6
+
5
7
  = Versionaire
6
8
 
7
- Ruby doesn't provide a primitive version type by default. Versionaire fills this gap by providing an
8
- immutable, thread-safe, and link:https://semver.org[Semantic Version] in order to use versions
9
- within your applications. This new version type behaves and feels a lot like other primitives (i.e.
10
- `String`, `Array`, `Hash`, etc) and can even be cast/converted from other primitives.
9
+ Ruby doesn't provide a primitive version type by default so Versionaire fills this gap by providing immutable and thread-safe {semver_link} so you can leverage versions within your applications. This new `Version` type behaves and feels a lot like other primitives (i.e. `String`, `Array`, `Hash`, etc) and can even be cast/converted from other primitives.
11
10
 
12
11
  toc::[]
13
12
 
14
13
  == Features
15
14
 
16
- * Provides https://semver.org[Semantic Versioning].
15
+ * Provides _strict_ {semver_link} which means `<major>.<minor>.<patch>`.
17
16
  * Provides immutable, thread-safe version instances.
18
17
  * Converts (casts) from a `String`, `Array`, `Hash`, or `Version` to a `Version`.
18
+ * Disallows `<major>.<minor>.<patch>-<pre-release>` usage even though {semver_link} suggests that you _may_ use pre-release information.
19
+ * Disallows `<major>.<minor>.<patch>+<build_metadata>` usage even though {semver_link} suggests that you _may_ use build metadata.
19
20
 
20
21
  == Screencasts
21
22
 
@@ -322,7 +323,7 @@ To contribute, run:
322
323
 
323
324
  [source,bash]
324
325
  ----
325
- git clone https://github.com/bkuhlmann/versionaire.git
326
+ git clone https://github.com/bkuhlmann/versionaire
326
327
  cd versionaire
327
328
  bin/setup
328
329
  ----
@@ -8,7 +8,6 @@ module Versionaire
8
8
  module_function
9
9
 
10
10
  # Conversion function (strict) for casting an object into a version.
11
- # :reek:TooManyStatements
12
11
  def Version object
13
12
  Converter.new(object).then do |converter|
14
13
  case object
@@ -26,13 +25,14 @@ module Versionaire
26
25
  using Refinements::Arrays
27
26
  using Refinements::Structs
28
27
 
29
- def initialize object
28
+ def initialize object, model: Version
30
29
  @object = object
30
+ @model = model
31
31
  end
32
32
 
33
33
  def from_string
34
34
  body = "Use: <major>.<minor>.<patch>, <major>.<minor>, <major>, or empty string."
35
- fail Error, error_message(object, body) unless Version.pattern.match? object
35
+ fail Error, error_message(object, body) unless PATTERN.match? object
36
36
 
37
37
  string_to_version
38
38
  end
@@ -41,7 +41,7 @@ module Versionaire
41
41
  body = "Use: [<major>, <minor>, <patch>], [<major>, <minor>], [<major>], or []."
42
42
  fail Error, error_message(object, body) unless (0..3).cover? object.size
43
43
 
44
- Version.with_positions(*object.pad(0, max: 3))
44
+ model.with_positions(*object.pad(0, max: 3))
45
45
  end
46
46
 
47
47
  def from_hash
@@ -58,16 +58,16 @@ module Versionaire
58
58
 
59
59
  private
60
60
 
61
- attr_reader :object, :filler
61
+ attr_reader :object, :model
62
62
 
63
63
  def string_to_version
64
- object.split(Version.delimiter)
64
+ object.split(DELIMITER)
65
65
  .map(&:to_i)
66
66
  .then { |numbers| numbers.pad 0, max: 3 }
67
- .then { |arguments| Version.with_positions(*arguments) }
67
+ .then { |arguments| model.with_positions(*arguments) }
68
68
  end
69
69
 
70
- def required_keys? = object.keys.all? { |key| Version.members.include? key }
70
+ def required_keys? = object.keys.all? { |key| model.members.include? key }
71
71
 
72
72
  def error_message(object, body) = "Invalid version conversion: #{object}. #{body}"
73
73
  end
@@ -9,21 +9,6 @@ module Versionaire
9
9
 
10
10
  using Refinements::Structs
11
11
 
12
- def self.delimiter = "."
13
-
14
- def self.pattern
15
- /
16
- \A( # Start of string and OR.
17
- \d* # Major only.
18
- | # OR pipe.
19
- \d+ # Major.
20
- #{delimiter}? # Delimiter.
21
- \d* # Minor.
22
- (?:#{delimiter}\d+) # Passive delimiter and patch.
23
- )\z # End of OR and string.
24
- /x
25
- end
26
-
27
12
  def initialize major: 0, minor: 0, patch: 0
28
13
  super
29
14
  validate
@@ -52,7 +37,7 @@ module Versionaire
52
37
 
53
38
  def to_proc = method(:[]).to_proc
54
39
 
55
- def to_s = to_a.join(self.class.delimiter)
40
+ def to_s = to_a.join DELIMITER
56
41
 
57
42
  alias_method :to_str, :to_s
58
43
 
data/lib/versionaire.rb CHANGED
@@ -1,6 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "versionaire/cast"
3
4
  require "versionaire/error"
4
- require "versionaire/version"
5
5
  require "versionaire/function"
6
- require "versionaire/cast"
6
+ require "versionaire/version"
7
+
8
+ module Versionaire
9
+ DELIMITER = "."
10
+
11
+ PATTERN = /
12
+ \A( # Start of string and OR.
13
+ \d* # Major only.
14
+ | # OR pipe.
15
+ \d+ # Major.
16
+ #{DELIMITER}? # Delimiter.
17
+ \d* # Minor.
18
+ (?:#{DELIMITER}\d+) # Passive delimiter and patch.
19
+ )\z # End of OR and string.
20
+ /x
21
+ end
data/versionaire.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "versionaire"
5
- spec.version = "10.5.0"
5
+ spec.version = "11.0.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://www.alchemists.io/projects/versionaire"
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.signing_key = Gem.default_key_path
23
23
  spec.cert_chain = [Gem.default_cert_path]
24
24
 
25
- spec.required_ruby_version = "~> 3.1"
26
- spec.add_dependency "refinements", "~> 9.6"
25
+ spec.required_ruby_version = "~> 3.2"
26
+ spec.add_dependency "refinements", "~> 10.0"
27
27
 
28
28
  spec.files = Dir["*.gemspec", "lib/**/*"]
29
29
  spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
data.tar.gz.sig CHANGED
Binary file
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: 10.5.0
4
+ version: 11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
29
  RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-07-17 00:00:00.000000000 Z
31
+ date: 2022-12-25 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: refinements
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '9.6'
39
+ version: '10.0'
40
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: '9.6'
46
+ version: '10.0'
47
47
  description:
48
48
  email:
49
49
  - brooke@alchemists.io
@@ -81,14 +81,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '3.1'
84
+ version: '3.2'
85
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  requirements: []
91
- rubygems_version: 3.3.18
91
+ rubygems_version: 3.4.1
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: Provides an immutable, thread-safe, and semantic version type.
metadata.gz.sig CHANGED
Binary file