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