Module: Philiprehberger::Semver

Defined in:
lib/philiprehberger/semver.rb,
lib/philiprehberger/semver/range.rb,
lib/philiprehberger/semver/parser.rb,
lib/philiprehberger/semver/version.rb,
lib/philiprehberger/semver/gem_version.rb

Overview

SemVer 2.0.0 parsing, comparison, range matching, and bump operations.

Defined Under Namespace

Modules: Parser, Range Classes: Error, Version

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.parse(string) ⇒ Version

Parse a SemVer string into a Version.

Parameters:

  • string (String)

    a SemVer 2.0.0 string (e.g. “1.2.3-beta.1build.123”+)

Returns:

  • (Version)

    the parsed immutable version

Raises:

  • (Error)

    if the string is not a valid SemVer 2.0.0 version



19
20
21
# File 'lib/philiprehberger/semver.rb', line 19

def self.parse(string)
  Parser.parse(string)
end

.satisfies?(version_str, constraint) ⇒ Boolean

Check whether a version satisfies a constraint string.

Parameters:

  • version_str (String, Version)

    the version to test

  • constraint (String)

    one or more comma-separated constraints (e.g. “>= 1.0.0, < 2.0.0”, “~> 1.4”, “^ 1.0.0”)

Returns:

  • (Boolean)

    true if every constraint is satisfied

Raises:

  • (Error)

    if version_str or constraint is invalid



30
31
32
# File 'lib/philiprehberger/semver.rb', line 30

def self.satisfies?(version_str, constraint)
  Range.satisfies?(version_str, constraint)
end

.sort(versions) ⇒ Array<String>

Sort an array of SemVer strings in ascending order.

Parameters:

  • versions (Array<String>)

    version strings to sort

Returns:

  • (Array<String>)

    sorted version strings

Raises:

  • (Error)

    if any string is not a valid SemVer version



39
40
41
# File 'lib/philiprehberger/semver.rb', line 39

def self.sort(versions)
  versions.map { |v| parse(v) }.sort.map(&:to_s)
end