Method: Solve::Constraint.compare_approx

Defined in:
lib/solve/constraint.rb

.compare_approx(constraint, target_version) ⇒ Boolean



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/solve/constraint.rb', line 110

def compare_approx(constraint, target_version)
  min = constraint.version
  max = if constraint.patch.nil?
    Semverse::Version.new([min.major + 1, 0, 0, 0])
  elsif constraint.build
    identifiers = constraint.version.identifiers(:build)
    replace     = identifiers.last.to_i.to_s == identifiers.last.to_s ? "-" : nil
    Semverse::Version.new([min.major, min.minor, min.patch, min.pre_release, identifiers.fill(replace, -1).join('.')])
  elsif constraint.pre_release
    identifiers = constraint.version.identifiers(:pre_release)
    replace     = identifiers.last.to_i.to_s == identifiers.last.to_s ? "-" : nil
    Semverse::Version.new([min.major, min.minor, min.patch, identifiers.fill(replace, -1).join('.')])
  else
    Semverse::Version.new([min.major, min.minor + 1, 0, 0])
  end
  min <= target_version && target_version < max
end