lib/versionaire/version.rb in versionaire-8.7.0 vs lib/versionaire/version.rb in versionaire-9.0.0
- old
+ new
@@ -1,35 +1,33 @@
# frozen_string_literal: true
require "refinements/structs"
module Versionaire
- DELIMITER = "."
-
# An immutable, semantic version value object.
Version = Struct.new :major, :minor, :patch, keyword_init: true do
include Comparable
using Refinements::Structs
- def self.regex
+ def self.delimiter
+ "."
+ end
+
+ def self.pattern
/
\A( # Start of string and OR.
\d* # Major only.
| # OR pipe.
\d+ # Major.
- #{DELIMITER}? # Delimiter.
+ #{delimiter}? # Delimiter.
\d* # Minor.
- (?:#{DELIMITER}\d+) # Passive delimiter and patch.
+ (?:#{delimiter}\d+) # Passive delimiter and patch.
)\z # End of OR and string.
/x
end
- def self.arguments major, minor, patch
- Hash[members.zip [major, minor, patch]]
- end
-
def initialize major: 0, minor: 0, patch: 0
super
validate
freeze
end
@@ -63,10 +61,10 @@
def up key, value = 1
revalue(key => value) { |previous, current| previous + current }
end
def to_s
- to_a.join DELIMITER
+ to_a.join self.class.delimiter
end
alias_method :to_str, :to_s
alias_method :values, :to_a