Class: MilkTea::PackageVersionReq
- Inherits:
-
Object
- Object
- MilkTea::PackageVersionReq
- Defined in:
- lib/milk_tea/packages/version.rb
Defined Under Namespace
Classes: Constraint
Instance Attribute Summary collapse
-
#constraints ⇒ Object
readonly
Returns the value of attribute constraints.
Class Method Summary collapse
Instance Method Summary collapse
- #exact? ⇒ Boolean
- #exact_version ⇒ Object
-
#initialize(constraints) ⇒ PackageVersionReq
constructor
A new instance of PackageVersionReq.
- #matches?(version) ⇒ Boolean
- #to_s ⇒ Object
Constructor Details
#initialize(constraints) ⇒ PackageVersionReq
Returns a new instance of PackageVersionReq.
143 144 145 |
# File 'lib/milk_tea/packages/version.rb', line 143 def initialize(constraints) @constraints = constraints.freeze end |
Instance Attribute Details
#constraints ⇒ Object (readonly)
Returns the value of attribute constraints.
79 80 81 |
# File 'lib/milk_tea/packages/version.rb', line 79 def constraints @constraints end |
Class Method Details
.parse(value, label: "package version requirement") ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/milk_tea/packages/version.rb', line 81 def self.parse(value, label: "package version requirement") text = value.to_s.strip raise PackageVersionError, "#{label} cannot be empty" if text.empty? segments = text.split(",", -1).map(&:strip) if segments.empty? || segments.any?(&:empty?) raise PackageVersionError, "#{label} #{text.inspect} contains an empty constraint" end constraints = segments.flat_map do |segment| parse_segment(segment, label:) end new(constraints) end |
Instance Method Details
#exact? ⇒ Boolean
147 148 149 |
# File 'lib/milk_tea/packages/version.rb', line 147 def exact? constraints.length == 1 && constraints.first.operator == :eq end |
#exact_version ⇒ Object
151 152 153 |
# File 'lib/milk_tea/packages/version.rb', line 151 def exact_version constraints.first.version if exact? end |
#matches?(version) ⇒ Boolean
155 156 157 158 |
# File 'lib/milk_tea/packages/version.rb', line 155 def matches?(version) candidate = PackageVersion.parse(version) constraints.all? { |constraint| constraint.matches?(candidate) } end |
#to_s ⇒ Object
160 161 162 |
# File 'lib/milk_tea/packages/version.rb', line 160 def to_s constraints.map(&:to_s).join(", ") end |