Module: Philiprehberger::Semver::Parser

Defined in:
lib/philiprehberger/semver/parser.rb

Constant Summary collapse

PRE_RELEASE_PART =
'(?:-(?<pre>[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))'
BUILD_PART =
'(?:\+(?<build>[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))'
CORE_PART =
'(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)'
SEMVER_REGEX =
/\A#{CORE_PART}#{PRE_RELEASE_PART}?#{BUILD_PART}?\z/

Class Method Summary collapse

Class Method Details

.parse(string) ⇒ Object

Raises:



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/philiprehberger/semver/parser.rb', line 11

def self.parse(string)
  match = SEMVER_REGEX.match(string.to_s.strip)
  raise Error, "invalid semver: #{string}" unless match

  Version.new(
    match[:major],
    match[:minor],
    match[:patch],
    pre_release: match[:pre],
    build_metadata: match[:build]
  )
end