class RuboCop::Cop::Sorbet::ValidGemVersionAnnotations
# @version <= 4.3-preview
# good
# @version > 1.2.3
# good
# @version = 1
# good
# @version > not a version number
# bad
@example
Checks that gem versions in RBI annotations are properly formatted per the Bundler gem specification.
def on_new_investigation
def on_new_investigation gem_version_annotations.each do |comment| gem_versions = gem_versions(comment) if gem_versions.empty? message = format(MSG, versions: "empty version") add_offense(comment, message: message) break end invalid_versions = gem_versions.reject do |version| valid_version?(version) end unless invalid_versions.empty? message = format(MSG, versions: invalid_versions.map(&:strip).join(", ")) add_offense(comment, message: message) end end end
def valid_version?(version_string)
def valid_version?(version_string) parts = version_string.strip.split(" ") operator, version = parts return false unless operator && parts return false unless VALID_OPERATORS.include?(operator) Gem::Version.correct?(version) end