Packages

final class SemanticSelector extends Serializable

Semantic version selector API to check if the VersionNumber satisfies conditions described by semantic version selector.

A comparator generally consist of an operator and version specifier. The set of operators is - <: Less than - <=: Less than or equal to - >: Greater than - >=: Greater than or equal to - =: Equal If no operator is specified, = is assumed.

If minor or patch versions are not specified, some numbers are assumed. - <=1.0 is equivalent to <1.1.0. - <1.0 is equivalent to <1.0.0. - >=1.0 is equivalent to >=1.0.0. - >1.0 is equivalent to >=1.1.0. - =1.0 is equivalent to >=1.0 <=1.0 (so >=1.0.0 <1.1.0).

Comparators can be combined by spaces to form the intersection set of the comparators. For example, >1.2.3 <4.5.6 matches versions that are greater than 1.2.3 AND less than 4.5.6.

The (intersection) set of comparators can combined by || (spaces are required) to form the union set of the intersection sets. So the semantic selector is in disjunctive normal form.

Wildcard (x, X, *) can be used to match any number of minor or patch version. Actually, 1.0.x is equivalent to =1.0 (that is equivalent to >=1.0.0 <1.1.0)

The hyphen range like 1.2.3 - 4.5.6 matches inclusive set of versions. So 1.2.3 - 4.5.6 is equivalent to >=1.2.3 <=4.5.6. Both sides of comparators around - are required and they can not have any operators. For example, >=1.2.3 - 4.5.6 is invalid.

The order of versions basically follows the rule specified in https://semver.org/#spec-item-11 > When major, minor, and patch are equal, a pre-release version has lower precedence > than a normal version. Example: 1.0.0-alpha < 1.0.0. > Precedence for two pre-release versions with the same major, minor, and patch version > Must be determined by comparing each dot separated identifier from left to right > until a difference is found as follows: > identifiers consisting of only digits are compared numerically > and identifiers with letters or hyphens are compared lexically in ASCII sort order. > Numeric identifiers always have lower precedence than non-numeric identifiers. > A larger set of pre-release fields has a higher precedence than a smaller set, > if all of the preceding identifiers are equal. > Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.

The differences from the original specification are following - SemanticVersionSelector separetes the pre-release fields by hyphen instead of dot - hyphen cannot be used in pre-release identifiers because it is used as separator for pre-release fields

Therefore, in order to match pre-release versions like 1.0.0-beta we need to explicitly specify the pre-release identifiers like >=1.0.0-alpha.

Source
SemanticSelector.scala
Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SemanticSelector
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(o: Any): Boolean
    Definition Classes
    SemanticSelector → AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    SemanticSelector → AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def matches(versionNumber: VersionNumber): Boolean
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. val selectors: Seq[SemSelAndChunk]
  17. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  18. def toString(): String
    Definition Classes
    SemanticSelector → AnyRef → Any
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  22. def withSelectors(selectors: Seq[SemSelAndChunk]): SemanticSelector

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped