Class: RSMP::SXL::Processing::VersionRequirement
- Inherits:
-
Object
- Object
- RSMP::SXL::Processing::VersionRequirement
- Defined in:
- lib/rsmp/sxl/processing/version_requirement.rb
Overview
Parses the version requirement syntax defined by RSMP Core.
Constant Summary collapse
- EXACT_VERSION =
/\A(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)\z/- PARTIAL_VERSION =
/\A(0|[1-9]\d*)\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*))?\z/- CLAUSE =
/\A(~|>=|<=|>|<)?\s*(\d+(?:\.\d+){1,2})\z/
Instance Attribute Summary collapse
-
#source ⇒ Object
readonly
Returns the value of attribute source.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(source) ⇒ VersionRequirement
constructor
A new instance of VersionRequirement.
- #satisfied_by?(version) ⇒ Boolean
Constructor Details
#initialize(source) ⇒ VersionRequirement
Returns a new instance of VersionRequirement.
23 24 25 26 |
# File 'lib/rsmp/sxl/processing/version_requirement.rb', line 23 def initialize(source) @source = source.to_s @predicates = parse(@source) end |
Instance Attribute Details
#source ⇒ Object (readonly)
Returns the value of attribute source.
12 13 14 |
# File 'lib/rsmp/sxl/processing/version_requirement.rb', line 12 def source @source end |
Class Method Details
.exact_version(value, label: 'version') ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/rsmp/sxl/processing/version_requirement.rb', line 14 def self.exact_version(value, label: 'version') string = value.to_s unless EXACT_VERSION.match?(string) raise Error, "Invalid #{label} #{value.inspect}; expected MAJOR.MINOR.PATCH" end Gem::Version.new(string) end |
Instance Method Details
#satisfied_by?(version) ⇒ Boolean
28 29 30 31 |
# File 'lib/rsmp/sxl/processing/version_requirement.rb', line 28 def satisfied_by?(version) version = self.class.exact_version(version) unless version.is_a?(Gem::Version) @predicates.all? { |predicate| predicate.call(version) } end |