Skip to content

Instantly share code, notes, and snippets.

@FeepingCreature
Created December 11, 2019 09:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FeepingCreature/7c660628389ec4d29e959547478299b4 to your computer and use it in GitHub Desktop.
Save FeepingCreature/7c660628389ec4d29e959547478299b4 to your computer and use it in GitHub Desktop.
# patch in ^ operator support
class Gem::Version
def bump_major
self.class.new segments[0].succ
end
end
class Gem::Requirement
OPS_BEFORE_SEMVER_OPERATOR = OPS
end
Gem::Requirement.__send__ :remove_const, 'OPS'
Gem::Requirement.__send__ :remove_const, 'PATTERN_RAW'
Gem::Requirement.__send__ :remove_const, 'PATTERN'
class Gem::Requirement
OPS = Gem::Requirement::OPS_BEFORE_SEMVER_OPERATOR.merge({
"^" => lambda { |v, r| v >= r && v.release < r.bump_major }
}).freeze
quoted = OPS.keys.map { |k| Regexp.quote k }.join "|"
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze
PATTERN = /\A#{PATTERN_RAW}\z/.freeze
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment