Class: Semvruler::Semversion
- Inherits:
-
Object
- Object
- Semvruler::Semversion
- Includes:
- Comparable
- Defined in:
- lib/semvruler/semversion.rb
Defined Under Namespace
Classes: FormatError
Constant Summary collapse
- FORMAT =
/ ^ (?<major>0|[1-9]\d*)\. (?<minor>0|[1-9]\d*) (\.(?<patch>0|[1-9]\d*))? (-(?<prerelease>(0|[1-9]\d*|\d*[a-z-][0-9a-z-]*)(\.(0|[1-9]\d*|\d*[a-z-][0-9a-z-]*))*))? (\+(?<build>[0-9a-z-]+(\.[0-9a-z-]+)*))? $ /xi.freeze
Instance Attribute Summary collapse
-
#build ⇒ Object
readonly
Returns the value of attribute build.
-
#major ⇒ Object
readonly
Returns the value of attribute major.
-
#minor ⇒ Object
readonly
Returns the value of attribute minor.
-
#patch ⇒ Object
readonly
Returns the value of attribute patch.
-
#prerelease ⇒ Object
readonly
Returns the value of attribute prerelease.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(format) ⇒ Semversion
constructor
A new instance of Semversion.
- #to_s ⇒ Object
Constructor Details
#initialize(format) ⇒ Semversion
Returns a new instance of Semversion.
53 54 55 56 57 58 59 60 |
# File 'lib/semvruler/semversion.rb', line 53 def initialize(format) @major = format[:major].to_i @minor = format[:minor].to_i @patch = format[:patch].to_i @build = format[:build] @prerelease = format[:prerelease]&.split('.') || [] @order = Order.new(@major, @minor, @patch, *@prerelease) end |
Instance Attribute Details
#build ⇒ Object (readonly)
Returns the value of attribute build.
47 48 49 |
# File 'lib/semvruler/semversion.rb', line 47 def build @build end |
#major ⇒ Object (readonly)
Returns the value of attribute major.
47 48 49 |
# File 'lib/semvruler/semversion.rb', line 47 def major @major end |
#minor ⇒ Object (readonly)
Returns the value of attribute minor.
47 48 49 |
# File 'lib/semvruler/semversion.rb', line 47 def minor @minor end |
#patch ⇒ Object (readonly)
Returns the value of attribute patch.
47 48 49 |
# File 'lib/semvruler/semversion.rb', line 47 def patch @patch end |
#prerelease ⇒ Object (readonly)
Returns the value of attribute prerelease.
47 48 49 |
# File 'lib/semvruler/semversion.rb', line 47 def prerelease @prerelease end |
Class Method Details
.parse(value, safe: true) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/semvruler/semversion.rb', line 24 def parse(value, safe: true) if value.respond_to?(:map) value.map { |item| cast(item, safe) } else cast(value, safe) end end |
Instance Method Details
#<=>(other) ⇒ Object
62 63 64 |
# File 'lib/semvruler/semversion.rb', line 62 def <=>(other) order <=> other.order end |
#to_s ⇒ Object
49 50 51 |
# File 'lib/semvruler/semversion.rb', line 49 def to_s "#{core_as_string}#{prerelease_as_string}#{build_as_string}" end |